Programando con Rupert

Cuando la programación es una forma vida...

Month: octubre 2015

WordPress: Añadir campos personalizados (metas) a un Post Type

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.

WordPress: Crear un Plugin con Custom Post Type

Recientemente, en varios de mis proyectos, me he visto en la necesidad de crear tipos de entradas personalizadas para WordPress. Es una tarea un tanto rutinaria, pero que puede aportar mucha funcionalidad y velocidad a la gestión de datos específicos en WordPress. Así que en vez de apuntar los pasos en mi cuaderno garabateado, lo escribo aquí por si le sirve de ayuda a alguien más.

¿Por qué un Custom Post Type?

Imaginémonos esta situación: En nuestro sitio de WordPress queremos que los usuarios puedan visualizar un directorio de gatos y puedan acceder a sus fichas. Efectivamente, podemos crear una entrada con los datos de un gato y, una vez diseñada, duplicarla y cambiar los valores para el siguiente. Así sucesivamente. Hasta que un día es necesario hacer un cambio en el diseño y toca modificar 500 entradas de gatos. Esta metodología sería entonces poco eficiente.

Cuando nos encontramos con la necesidad de manejar un tipo de entrada que tendrá sus datos específicos además de la foto y la descripción (edad, sexo, color, carácter) y además tendrá un diseño claramente diferenciado de una entrada de blog corriente, una opción a tener en cuenta es la creación de un Custom Post Type.

Preparación del ejemplo

Lo que vamos a conseguir con este artículo es crear una sección “Gatos” en el menú de administración de WordPress y conseguir visualizarlo.

Creación del plugin

Lo primero que vamos a hacer va a ser crear un plugin para que al activarlo nos permita incluir nuestra nueva funcionalidad. En la carpeta /wp-content/plugins crearé una carpeta llamada gatospcrupert. Y dentro de esta carpeta, crearé el fichero gatospcrupert.php que contendrá mi plugin.

El primer paso es indicar los datos del plugin al comienzo del fichero gatospcrupert.php

Sólo con este paso, ya debería aparecer en la sección Plugins de la administración de WordPress para ser activado, así que lo activamos.

Creamos el Post Type GATOS

Ahora que tenemos nuestro plugin, vamos a añadir el Custom Post Type. Para ello en el fichero gatospcrupert.php vamos a añadir el siguiente código.

En el hook “init” enlazamos la función post_type_gatos, que por un lado registra el post type con sus etiquetas, mediante el método register_post_type y por otro registrar la taxonomía, mediante el método register_taxonomy.

Con este código ya deberíamos tener disponible la sección Gatos:

Por último, en el hook de activación del plugin, habría que añadir una llamada al método flush_rewrite_rules() para que se creen las url www.dominio.com/gatos/rupert

Con este artículo hemos visto cómo crear un Post Type personalizado. En un siguiente artículo veremos cómo añadirle campos personalizados.

¡Hasta la próxima!

Rupert.

© 2019 Programando con Rupert

Sé cambiar el Footer, pero me apetece decir que este tema es de Anders NorenParriba' ↑