En el artículo anterior escribí acerca de cómo crear un Tipo de Entrada personalizado (Custom Post Type) en WordPress y hoy voy a indicar cómo podemos añadirle campos personalizados. Ya que uno de los objetivos de crear un Custom Post Type es que cada entrada de ese tipo sea diferente a una entrada de blog, tanto funcional como aparentemente.

Preparación del ejemplo

Voy a realizar este ejemplo a partir del Custom Post Type que creé en el artículo anterior. Lo que vamos a hacer es añadir varios campos personalizados al Post Type “Gatos” (edad, sexo, color, raza).

Ya que de momento la edición de un gato no se diferencia de la edición de una entrada de blog:

Meta Boxes

Lo que queremos lograr es añadir a esa pantalla de edición cuatro campos personalizados. Efectivamente, hay partes del editor que no vamos a alterar (como es el Título, la descripción o la imagen principal). Así que los campos que vayamos añadiendo los incluiremos en Meta Boxes.

Podríamos definir las Meta Boxes como “secciones” en la edición de una entrada que permiten gestionar información adicional. Se pueden establecer tantas secciones como necesitemos.

En este ejemplo vamos a crear una Meta Box llamada Características del gato, que nos permita introducir esos valores específicos.

Cada Meta Box se compone de dos procesos, en uno de ellos indicamos cómo se mostrarán los campos y sus valores (add_meta_boxes), y en el otro indicaremos cómo se guardan esos valores cuando guardemos la entrada (save_post).

Mostrando los campos – add_meta_boxes

Lo primero que haremos será añadir una acción al hook “add_meta_boxes” indicando la función que añadirá la caja donde dibujaremos los atributos, en nuestro caso la función se llama gatos_custom_metabox:

add_action( ‘add_meta_boxes’, ‘gatos_custom_metabox’ );

function gatos_custom_metabox()
{
add_meta_box( ‘gato_meta’, ‘Características del gato’, ‘display_gato_atributos’, ‘gatos’, ‘normal’, ‘high’);
}

Esta función tiene que llamar a la función add_meta_box, que acepta los siguientes parámetros en este orden:

  • Nombre de la Meta Box
  • Título de la Sección
  • Función que dibujará los campos
  • Custom Post Type al que se va asignar
  • Lugar donde aparecerá (Normal, Advanced, Side)
  • Prioridad respecto a otras Meta Boxes

Por lo tanto ya sólo queda “dibujar” y mostrar los campos. En nuestro caso lo haremos mediante la función display_gato_atributos, que tiene que aceptar un parámetro que represente el post en el que estamos. Así que esta función recoge los meta datos guardados si los hubiera (get_post_meta), y los muestra en los campos correspondientes.

Guardando los campos – save_post

Una vez que tenemos los campos disponibles, queda guardarlos junto al post. Para ello hemos de añadir una acción al hook save_post indicándole la función que guardará los datos mediante la función update_post_meta.

Con esto ya hemos visto cómo añadir campos personalizados a nuestros tipos de entrada en WordPress. En siguientes artículos veremos cómo crear plantillas personalizadas tanto de listado como de ficha.

¡Hasta la próxima!

Rupert.