Crear Custom Post Type en WordPress

Los Custom Post Type o CPT, son un tipo de post, es decir tipo de contenido. Las Entradas, Paginas, Porfolio, etc son tipos de contenido. Si queremos crear uno propio hay que seguir los siguientes pasos.

Para los que no queráis teclear código, recomiendo este plugin: Custom post type UI

Documentación para registrar los CPT

Para no perder los cambios ,si decidimos usar otra plantilla, lo mejor es crear un plugin. Crear un plugin básico es muy sencillo. Solo habrá que crear en /wp-content/pluings de la instalación de nuestro WordPress un nuevo directorio pj.: ypro-cpt-revista, dentro de este directorio creamos ypro-cpt-revista.php con el siguiente contenido:

<?php
/*
Plugin Name: CPT para revistas
Plugin URI: https://yanez.pro/
Description: Crear un CPT para un contenido tipo revista.
Author: JYY
Author URI: https://yanez.pro/
Version: 1.0.0
Text Domain: ypro-cpt-revista
Domain Path: /
*/

Con estos pasos ya tenemos un plugin que se puede activar dentro del área de administración pero que aun no hace nada. Por lo que habrá que comenzar a codificar para crear nuestro CPT.

function ypro_cpt_revista () {

$opciones = array (

‘public’ => true, 

)

register_post_type(‘revista’, $opciones) 

}

add_action(‘init’, ‘ypro_cpt_revista’);

Si añadimos esto lo anterior, veremos que ya aparece en el menú de administración una nueva opción llamada Entradas. Vamos a darle el nombre que que queremos:

function ypro_cpt_revista () {

$opciones = array (

‘public’ => true,
‘label’ => ‘Revistas’,
);

register_post_type(‘revista’, $opciones);

}

add_action(‘init’, ‘ypro_cpt_revista’);

Ya tenemos la base, ahora habrá que pulirlo usando los argumentos para los CPT:

‘exclude_from_search’ => true,

No entrará en las búsquedas que se hagan desde el buscador de la web.

‘menu_position’ => 5,

Es la posición (en altura) en el menú.

‘menu_icon’ => ‘dashicons-book-alt‘,

El icono del menú (DashIcons) .

‘has_archive’ => true,

Muestra el contenido archivado en ese CPT, es decir, muestra un listado de elementos creados en Revistas en http://midominio.pro/revistas/.

Si no muestra el contenido de http://midominio.pro/revistas/ habiendo añadido has_archive hay que ir a Ajustes/Enlaces permanente y pulsar en Guardar -cosas de WP-

Vamos cambiar todos los textos donde dice …entradas por …revistas. Para ello habrá que usar la funcion ‘labels’ y un array para incluir todos los textos. Una vez más nos vamos a  os argumentos para los CPT del Codex de WP para usar uno de sus ejemplos.

'name'=> _x( 'Books', 'post type general name/descripción', 'your-plugin-textdomain/el nombre, será importante para una futura traducción' ),

 Ejemplo completo de Custom Post Type

<?php
/*
Plugin Name: CPT para revistas
Plugin URI: https://yanez.pro/
Description: Crear un CPT para un contenido tipo revista.
Author: JYY
Author URI: https://yanez.pro/
Version: 1.0.0
Text Domain: ypro-cpt-revista
Domain Path: /
*/

function ypro_cpt_revista () {

$nombres_etiquetas = array(
‘name’ => _x( ‘Revistas’, ‘post type general name’, ‘ypro-cpt-revista’ ),
‘singular_name’ => _x( ‘Revista’, ‘post type singular name’, ‘ypro-cpt-revista’ ),
‘menu_name’ => _x( ‘Revistas’, ‘admin menu’, ‘ypro-cpt-revista’ ),
‘name_admin_bar’ => _x( ‘Revista’, ‘Añadir nueva on admin bar’, ‘ypro-cpt-revista’ ),
‘add_new’ => _x( ‘Añadir nueva’, ‘Revista’, ‘ypro-cpt-revista’ ),
‘add_new_item’ => __( ‘Añadir nueva Revista’, ‘ypro-cpt-revista’ ),
‘new_item’ => __( ‘Nueva Revista’, ‘ypro-cpt-revista’ ),
‘edit_item’ => __( ‘Editar Revista’, ‘ypro-cpt-revista’ ),
‘view_item’ => __( ‘Ver Revista’, ‘ypro-cpt-revista’ ),
‘all_items’ => __( ‘Todas Revistas’, ‘ypro-cpt-revista’ ),
‘search_items’ => __( ‘Buscar Revistas’, ‘ypro-cpt-revista’ ),
‘parent_item_colon’ => __( ‘Revistas padre:’, ‘ypro-cpt-revista’ ),
‘not_found’ => __( ‘No se han encontrado Revistas.’, ‘ypro-cpt-revista’ ),
‘not_found_in_trash’ => __( ‘No hay Revistas en la papelera.’, ‘ypro-cpt-revista’ )

);

$opciones = array (

‘public’ => true,
‘label’ => ‘Revistas’,
‘labels’ => $nombres_etiquetas,
‘menu_position’ => 9,
‘menu_icon’ => ‘dashicons-Revista-alt’,
‘has_archive’ => true,
);

register_post_type(‘revista’, $opciones);

}

add_action(‘init’, ‘ypro_cpt_revista’);

 Cómo crear un CPT en Genesis Framework