Custom Post Types é a função usada para manipulação de conteúdo no WordPress, com ela pode-se criar conteúdos personalizados, diferentes dos 5 tipos de postes padrão do WordPress…
Isso permite que o WordPress seja usado para uma ampla gama de gerenciamento de conteúdo e não apenas para criar blogs.
Criando Custom Post Types
Este assunto é muito amplo e as possibilidades de se usar conteúdos personalizados são ilimitadas. Então vamos criar um exemplo de Portfolio, que poderá ser usado em qualquer Web site que use o WordPress como CMS.
O código php que vamos criar pode ser colocado diretamente no arquivo «functions.php» ou pode-se criar um arquivo próprio e usar um include para o adicionar ao «functions.php».
<?php # # ============================================================================== # Adding Custom Post Type for Portfolio # ============================================================================== # function my_custom_post_portfolio() { $labels = array( 'name' => __( 'Portfolio', 'text-domain' ), 'singular_name' => __( 'Portfolio Item', 'text-domain' ), 'menu_name' => _x( 'Portfolio', 'admin menu', 'text-domain' ), 'name_admin_bar' => _x( 'Portfolio Item', 'add new on admin bar', 'text-domain' ), 'add_new' => __( 'Add New Item', 'text-domain' ), 'add_new_item' => __( 'Add New Portfolio Item', 'text-domain' ), 'new_item' => __( 'Add New Portfolio Item', 'text-domain' ), 'edit_item' => __( 'Edit Portfolio Item', 'text-domain' ), 'view_item' => __( 'View Item', 'text-domain' ), 'all_items' => __( 'All Portfolio Items', 'text-domain' ), 'search_items' => __( 'Search Portfolio', 'text-domaine' ), 'parent_item_colon' => __( 'Parent Portfolio Item:', 'text-domain' ), 'not_found' => __( 'No portfolio items found', 'text-domain' ), 'not_found_in_trash' => __( 'No portfolio items found in trash', 'text-domain' ), 'filter_items_list' => __( 'Filter portfolio items list', 'text-domain' ), 'items_list_navigation' => __( 'Portfolio items list navigation', 'text-domain' ), 'items_list' => __( 'Portfolio items list', 'text-domain' ), ); $args = array( 'labels' => $labels, 'description' => __('Displays my portfolio and their ratings', 'text-domain'), 'supports' => array( 'title', 'editor', 'thumbnail', 'excerpt', 'comments' ), 'public' => true, 'capability_type' => 'post', 'rewrite' => array( 'slug' => 'portfolio', ), // Permalinks format 'menu_position' => 5, 'menu_icon' => ( version_compare( $GLOBALS['wp_version'], '3.8', '>=' ) ) ? 'dashicons-portfolio' : false , 'has_archive' => true, ); register_post_type( 'portfolio', $args ); } add_action( 'init', 'my_custom_post_portfolio' ); ?>
Primeiro criamos a função my_custom_post_portfolio(), depois com a função add_action dizemos ao wordpress registar o nosso novo post type. Na variável $labels indicamos os valores para cada título do post type e na variável $args colocamos as informações do post type. Aconselho ler o texto do site «codex.wordpress.org» para uma informação mais detalhada sobre register_post_type()…
Criando Custom Taxonomies
Os posts padrão do WordPress usam categorias e etiquetas para organizar o conteúdo. Ao usar «Custom Post Types» podemos criar uma estrutura de conteúdo diferente, mais específica para nosso site. Criar taxonomias personalizadas permite-nos ter categorias e etiquetas no nosso post personalizado diferentes das categorias e etiquetas padrão do WordPress.
Então devemos registar taxonomias personalizadas usando register_taxonomy();
<?php # # ============================================================================== # creating custom taxonomies for categories on portfolio custom post # ============================================================================== # function my_cat_taxonomies_portfolio() { $labels = array( 'name' => __( 'Portfolio Categories', 'text-domain' ), 'singular_name' => __( 'Portfolio Category', 'text-domain' ), 'menu_name' => __( 'Portfolio Categories', 'text-domain' ), 'edit_item' => __( 'Edit Portfolio Category', 'text-domain' ), 'update_item' => __( 'Update Portfolio Category', 'text-domain' ), 'add_new_item' => __( 'Add New Portfolio Category', 'text-domain' ), 'new_item_name' => __( 'New Portfolio Category Name', 'text-domain' ), 'parent_item' => __( 'Parent Portfolio Category', 'text-domain' ), 'parent_item_colon' => __( 'Parent Portfolio Category:', 'text-domain' ), 'all_items' => __( 'All Portfolio Categories', 'text-domain' ), 'search_items' => __( 'Search Portfolio Categories', 'text-domain' ), 'popular_items' => __( 'Popular Portfolio Categories', 'text-domain' ), 'separate_items_with_commas' => __( 'Separate portfolio categories with commas', 'text-domain' ), 'add_or_remove_items' => __( 'Add or remove portfolio categories', 'text-domain' ), 'choose_from_most_used' => __( 'Choose from the most used portfolio categories', 'text-domain' ), 'not_found' => __( 'No portfolio categories found.', 'text-domain' ), 'items_list_navigation' => __( 'Portfolio categories list navigation', 'text-domain' ), 'items_list' => __( 'Portfolio categories list', 'text-domain' ), ); $args = array( 'labels' => $labels, 'public' => true, 'show_in_nav_menus' => true, 'show_ui' => true, 'show_tagcloud' => true, 'hierarchical' => true, 'rewrite' => array( 'slug' => 'portfolio_category' ), 'show_admin_column' => true, 'query_var' => true, ); register_taxonomy( 'portfolio_category', 'portfolio', $args ); } add_action( 'init', 'my_cat_taxonomies_portfolio', 0 ); ?>
Como podemos ver, criamos a função my_cat_taxonomies_portfolio(), depois com a função add_action dizemos ao wordpress registar a nova taxonomia para o nosso post type. Na variável $labels indicamos os valores para cada título da taxonomia e na variável $args colocamos as informações da taxonomia. Aconselho ler o texto do site «codex.wordpress.org» para uma informação mais detalhada sobre register_taxonomy…
Bom neste artigo ficamos por aqui, vimos como usar o «Custom Post Types» e já temos o nosso post type «portfolio» criado e a funcionar. No próximo artigo vamos ver como criar taxonomies para tag e criar o template para mostrar o nosso conteúdo personalizado.
Um abraço…