Índice de contenidos

Crear Custom Post Types o entradas personalizadas

En el artículo de hoy aprenderemos a crear entradas personalizadas en WordPress. Las entradas personalizadas nos permiten tratar la información de nuestro sitio de forma más estructurada y coherente.

PROBLEMA: WordPress viene con los siguientes tipos de entradas definidas:

  • Entradas – Post (Post Type: ‘post’)
  • Páginas – Page (Post Type: ‘page’)
  • Adjuntos – Attachment (Post Type: ‘attachment’)
  • Revisiones – Revision (Post Type: ‘revision’)
  • Menú navegación – Navigation menu (Post Type: ‘nav_menu_item’)

en muchos proyectos estos tipos de entradas no cubren las necesidades del mismo.  

¿Por qué necesitamos crear Entradas Personalizadas o Custom Post Types?

Vamos a suponer que necesitamos crear un sitio que habla sobre libros. En este caso es probable que necesites almacenar datos concretos que identificas a cada libro con el título, autor, editorial… La estructura de las entradas de WordPress tal y como vienen definidas no te permiten esto. Además la palabra post o entradas tampoco definen muy bien un tipo de artículo concreto.

El problema todavía es mayor si además de la información de libros queremos añadir información a nuestro sitio sobre «autores». Los autores los identificamos con su nombre, fecha de nacimiento, biografía y otras publicaciones. Ahora mismo tenemos dos tipos de contenidos muy diferentes en nuestra web.

¿Qué decisión tomamos? 

  1. Creamos dos categorías en post una para libros y otra para autores y los editamos todos como post creando campos diferentes para cada tipo.
  2. o creamos dos tipos de entradas personalizadas una para libros y otra para autores y les asignamos sus atributos correspondientes

SOLUCIÓN: a pesar de que ambas soluciones son correctas, en este caso es más adecuado aplicar la segunda opción. Vamos a añadir a nuestro archivo functions.php un pequeño código para crear entradas personalizadas en WordPress. En este artículo crearemos un nuevo tipo de entrada personalizada (CPT) para «libro». 

Entradas Personalizadas en WordPress

Entradas Personalizadas en WordPress: en la imagen de la izquierda puedes observar un administrador WordPress con dos tipos de entradas personalizadas: «Servicios» y «Trabajos Realizados».

 

¿Qué son los custom post types o entradas personalizadas?

Los custom post types o tipos de entrada personalizados son elementos para almacenar contenido diferente al que viene por defecto en WordPress. Este contenido tiene la misma funcionalidad que las entradas (post) o las páginas de WP pero se crea según las necesidades del proyecto.

Los CPT tendrán un menú en el panel de administración de WordPress igual que el de páginas o post…

Podemos crear tantos tipos de entradas personalizadas como necesidades tenga el sitio web; entradas personalizadas para almacenar datos de películas, cds, equipos de fútbol… y asignarles a cada una campos o atributos personalizados.

Crear entradas personalizadas en 3 pasos

Hoy vamos a ver como crear estas entradas personalizadas y en otro post os explicaré como crear campos personalizados. Existen plugins que instalados en tu WordPress te ayudarán a crear entradas personalizadas, en este artículo no vamos a emplear ningún plugin, lo haremos con programación, ya que es un código muy sencillo.

PASO 1 – localizar el archivo dónde escribiremos el código

Primero necesitamos abrir el archivo functions.php de tu tema hijo WordPress. Lo puedes localizar en la siguiente ruta: /wp-content/themes/tutemahijo/functions.php

Si no tienes creado un tema hijo recuerda que puedes perder el código de esta función al actualizar el tema, creo que es un buen momento para que decidas trabajar con temas hijo.

PASO 2 – copiar el código dentro del archivo

Copia el siguiente código: este código añade un nuevo tipo de entrada personalizada llamada libro en WordPress, si quieres añadir categorías y etiquetas a esta entrada tipo libro puedes dejar un comentario y te envío el código completo.

Puedes modificar libro por el nombre que más identifique a tu entrada personalizada teniendo en cuenta las siguientes limitaciones:

  • No puede tener más de 20 caracteres, ni letras mayúsculas o espacios.
  • No puedes emplear nombres reservados en WordPress (post, pages…)
/* cargamos con el hook 'init' el registro del nuevo tipo */
add_action('init', 'cpt_libros', 1);
/*Función con los argumentos y etiquetas de nuestro tipo*/

function cpt_libros() {
$labels = array(
'name' => _x('Libros', 'post type general name'),
'singular_name' => _x('Libro', 'post type singular name'),
'add_new' => _x('Añadir Nuevo Libro', 'Libro'),
'add_new_item' => __('Añdir Nuevo Libro'),
'edit_item' => __('Editar Libro'),
'new_item' => __('Nuevo Libro'),
'view_item' => __('Ver Libro'),
'search_items' => __('Buscar Libro'),
'not_found' => __('No se han encontrado Libros'),
'not_found_in_trash' => __('No se han encontrado Libros en la papelera')
);
$args = array(
'labels' => $labels,
'public' => true,
'hierarchical' => false,
'menu_position' => 2,
'has_archive' => true,
'query_var' => true,
'supports' => array('title','editor','thumbnail'),
'rewrite' => array('slug' => 'libro'),
);

register_post_type( 'libro', $args );
}

 

Cómo verás es un código muy sencillo pero suficiente para crear tu nueva entrada personalizada, este código admite muchos más argumentos, por lo tanto se puede ampliar para añadir categorías, etiquetas, para que soporte autor, comentarios… 

Explicación Código Entradas Personalizadas en WordPress

Si observas la function, verás que se divide en tres secciones;

  1. Etiquetas (labels): sirven para crear en el administrador de WordPress el nuevo menú libro y los submenús de añadir nueva entrada, papelera…
  2. Array de argumentos ($args): lo primero que hacemos en este array es pasarle las etiquetas labels que hemos creado y añadimos características que soportará nuestro nuevo tipo de post. Este array dispones de muchos parámetros, puedes conocer más detalles del mismo en lo siguientes artículos de este blog:
    1. Artículo que analiza el Array supports en Custom Post Types: Dentro del array de argumentos ($args) hacemos referencia a «supports», es un alias que llama a la función de WordPress add_post_type_support() y que añade las características que soportará el post, lo que indicamos dentro del array supports es lo que veremos en la ventana de edición del mismo dentro del administrador de WordPress. 
    2. Artículo sobre todos los parámetros soportados por el array de argumentos al crear nuevas entradas personalizadas.
  3. Registro del post_type (register_post_type).

PASO 3 – Guarda los cambios

Para finalizar pulsa sobre «Guardar» en el archivo functions.php y si es necesario subes el archivo al servidor*.

*Normalmente yo trabajo con un editor de código que me permite editar directamente las modificaciones en el servidor y este paso en algunas ocasiones no es necesario realizarlo.

Para acceder a la edición de las Entradas Personalizadas en WordPress entra de nuevo en tu administrador. Se ha creado un nuevo menú con cada una de las entradas personalizadas.

Custom Post Type libro

Siguiendo el mismo método puedes crear tantas entradas personalizadas como necesites.

Si necesitas añadir atributos o campos personalizados a tus entradas puedes leer los siguientes artículos de este blog:

Plugin Custom Fields WordPress

Código Custom Fields WordPress


Polylang: si tu web está implementada en varios idiomas y utilizas Polylang necesitarás adaptar las nuevas entradas para que puedan ser traducidas, aquí te dejo el código necesario para utilizar Polylang con Custom Post Types.