En éste tutorial vamos a ver cómo crear custom post types en WordPress.
Los custom post types son, como su nombre indica, tipos de entradas personalizadas. Cuando instalamos algún plugin, es común que éste nos cree nuevos custom post types (por ejemplo Woocommerce nos crea el CPT «Productos»).
En WordPress por defecto podemos ver, por ejemplo:
- Páginas
- Entradas
Pero si queremos hacer algo un poco personalizado, los CPT son la mejor manera para hacerlo sin tener que cargar la web de plugins. Además tendremos un control total sobre ellos, decidiendo si queremos categorías, etiquetas, imagen destacada, extracto, etc.
Hay varias maneras de crear un custom post type. Puedes crearlo con un plugin, echar un vistazo al codex de WordPress y picar el código, etc…
Yo me voy a decantar por una herramienta que me gusta mucho y que ya he utilizado en otros tutoriales para crear menús personalizados y áreas de widget personalizadas. Estoy hablando de GenerateWP
Entramos en GenerateWP y vamos a Post Type Generator.
Para el ejemplo, vamos a crear un custom post type llamado «Tutoriales«.
1. Pestaña General
- Function: Ponemos un nombre a la función, por ejemplo crear_cpt_tutoriales.
- Child Themes: Decimos que sí queremos soporte para child themes.
- Text Domain: Podemos ponerle el mismo nombre de la función.
2. Pestaña Post Type
- Post type Key: Ponemos «tutoriales».
- Description: Escribimos la descripción que queramos.
- Name (singular) y Name (plural): Pues eso, el nombre del CPT en singular y en plural.
- Link to taxonomies: Por defecto nos crea categorías (category) y etiquetas (post_tag). Podemos dejar las 2, elegir la que queramos o quitarlas.
- Hierarchical: Podemos elegir que se comporte como las páginas (no jerárquico) o como los posts (jerárquico).
3. Pestaña Labels
Esto no necesita explicación. Simplemente tenemos que rellenar cada campo con la traducción que queramos que aparezca.
4. Pestaña Options
Supports: Por defecto el CTP sólo nos muestra título y contenido. Aquí podemos elegir qué es lo que queremos, por ejemplo el extracto o la imagen destacada.
El resto de opciones las podemos dejar tal cual están.
5. Pestaña Visibility
Aquí lo único que vamos a cambiar es el icono que queremos que nos aparezca en el custom post type. Podemos elegirlo aquí
Copiamos la clase del icono que queramos y la pegamos en la opción Admin Sidebar Icon
Una vez que tenemos todas las opciones que queremos, le damos a «Update Code», y el código que nos genera lo pegamos en nuestro functions.php o en nuestro plugin personalizado.
En éste caso el código sería:
if ( ! function_exists('crear_cpt_tutoriales') ) {
// Register Custom Post Type
function crear_cpt_tutoriales() {
$labels = array(
‘name’ => _x( ‘Tutoriales’, ‘Post Type General Name’, ‘crear_cpt_tutoriales’ ),
‘singular_name’ => _x( ‘Tutorial’, ‘Post Type Singular Name’, ‘crear_cpt_tutoriales’ ),
‘menu_name’ => __( ‘Tutoriales’, ‘crear_cpt_tutoriales’ ),
‘name_admin_bar’ => __( ‘Tutoriales’, ‘crear_cpt_tutoriales’ ),
‘archives’ => __( ‘Item Archives’, ‘crear_cpt_tutoriales’ ),
‘parent_item_colon’ => __( ‘Tutorial’, ‘crear_cpt_tutoriales’ ),
‘all_items’ => __( ‘Todos los tutoriales’, ‘crear_cpt_tutoriales’ ),
‘add_new_item’ => __( ‘Añadir nuevo tutorial’, ‘crear_cpt_tutoriales’ ),
‘add_new’ => __( ‘Add New’, ‘crear_cpt_tutoriales’ ),
‘new_item’ => __( ‘New Item’, ‘crear_cpt_tutoriales’ ),
‘edit_item’ => __( ‘Edit Item’, ‘crear_cpt_tutoriales’ ),
‘update_item’ => __( ‘Update Item’, ‘crear_cpt_tutoriales’ ),
‘view_item’ => __( ‘View Item’, ‘crear_cpt_tutoriales’ ),
‘search_items’ => __( ‘Search Item’, ‘crear_cpt_tutoriales’ ),
‘not_found’ => __( ‘Not found’, ‘crear_cpt_tutoriales’ ),
‘not_found_in_trash’ => __( ‘Not found in Trash’, ‘crear_cpt_tutoriales’ ),
‘featured_image’ => __( ‘Featured Image’, ‘crear_cpt_tutoriales’ ),
‘set_featured_image’ => __( ‘Set featured image’, ‘crear_cpt_tutoriales’ ),
‘remove_featured_image’ => __( ‘Remove featured image’, ‘crear_cpt_tutoriales’ ),
‘use_featured_image’ => __( ‘Use as featured image’, ‘crear_cpt_tutoriales’ ),
‘insert_into_item’ => __( ‘Insert into item’, ‘crear_cpt_tutoriales’ ),
‘uploaded_to_this_item’ => __( ‘Uploaded to this item’, ‘crear_cpt_tutoriales’ ),
‘items_list’ => __( ‘Items list’, ‘crear_cpt_tutoriales’ ),
‘items_list_navigation’ => __( ‘Items list navigation’, ‘crear_cpt_tutoriales’ ),
‘filter_items_list’ => __( ‘Filter items list’, ‘crear_cpt_tutoriales’ ),
);
$args = array(
‘label’ => __( ‘Tutorial’, ‘crear_cpt_tutoriales’ ),
‘description’ => __( ‘Descripción del CPT’, ‘crear_cpt_tutoriales’ ),
‘labels’ => $labels,
‘supports’ => array( ),
‘taxonomies’ => array( ‘category’, ‘post_tag’ ),
‘hierarchical’ => false,
‘public’ => true,
‘show_ui’ => true,
‘show_in_menu’ => true,
‘menu_position’ => 5,
‘menu_icon’ => ‘dashicons-wordpress’,
‘show_in_admin_bar’ => true,
‘show_in_nav_menus’ => true,
‘can_export’ => true,
‘has_archive’ => true,
‘exclude_from_search’ => false,
‘publicly_queryable’ => true,
‘capability_type’ => ‘page’,
);
register_post_type( ‘Tutoriales’, $args );
}
add_action( ‘init’, ‘crear_cpt_tutoriales’, 0 );
}
Y ya lo tenemos. Nos tendría que quedar algo así:
De esta manera tan sencilla y rápida podremos crear tantos tipos de post personalizados como queramos.
Deja una respuesta