Añadir campos personalizados a un custom post en WordPress

WordPress fue creado como un gestor de contenidos orientado a crear blogs. Con el paso del tiempo esto hay ido cambiando y WordPress ha evolucionado a un CMS capaz de gestionar sitios web de mayor envergadura e incluso aplicaciones web que son utilizadas por millones de usuarios y varias empresas que forman parte de Fortune 500.

Con WordPress 3.0 llegaron los custom posts, abriendo un abanico de posibilidades para crear todo tipo de contenido debidamente estructurado y separado de los posts y páginas tradicionales.

En este tutorial te voy a mostrar cómo añadir campos personalizados a un custom post en WordPress. De esta forma, podrás agregar nuevos datos asociados a las publicaciones creadas. Ya no tendrás que limitarte al titulo, contenido, categoría, autor y otros campos estándar.

Necesitamos definir un custom post

No es el objetivo de este tutorial abordar los custom post. Por lo tanto, vamos a utilizar el código mínimo para definir un custom post identificado como book y llamado Libros.

Inserta el código en functions.php

Ya tenemos un custom post al cual podemos asociar el meta box que estamos a punto de crear.

custom post en wordpress
Libros creado como custom post

Cómo añadir campos personalizados

Para añadir campos personalizados necesitamos registrar un meta box utilizando el siguiente código:

Lo que hemos hecho acá es registrar un meta box con titulo SEO, asociado al custom post identificado como book. Esto asegura que solo se mostrará al editar una entrada de tipo book y no en las entradas estándar, páginas u otro tipo de contenidos.

En la línea 11, definimos una función de retorno llamada wpe_render_mb() que será la encargada de imprimir los campos editables dentro del metabox. Observa cómo utilizamos un campo nonce para asegurarnos que al guardar los valores de estos campos, solo se pueda hacer desde este meta box, evitando así una potencial vulnerabilidad en el código.

anadir campos personalizados
Meta box SEO agregado a Libros

Si no se guardan los valores, no sirve

Hasta ahora podemos ver los campos dentro del meta box y podemos asignar valores. Sin embargo, si guardas, publicas o actualizas el libro, verás que no se guardan los campos personalizados. Para eso, necesitamos utilizar el siguiente código:

Esta función, que se ejecuta con el action save_post revisa a través del campo nonce que la llamada venga desde el metabox que definimos antes. También verifica que estemos guardando datos para un custom post de tipo book y si no es así, detiene la ejecución de la función.

Si pasa todas las validaciones, toma los valores $_POST recibidos del meta box, los sanea, para evitar inyección de código y los guarda en la base de datos, asociados al libro que estamos editando.

Imprimiendo los meta tags SEO

Solo nos queda hacer que al mostrar el libro, se impriman las etiquetas con sus respectivos valores. Para ello, vamos a utilizar este código:

Desde este momento, siempre que creamos un Libro en nuestro administrador en WordPress y los visualicemos, en el código HTML del mismo veremos ambas etiquetas. Es un resultado no visible para los visitantes, pero si a nivel de código y muy importante para el SEO del contenido.

Si visualizamos el código HTML de la página abierta, podremos ver el resultado.

etiquetas SEO en WordPress
Etiquetas SEO creadas en el código HTML

Que hacer si no carga el libro

Es posible que al abrir el libro con nuestras palabras claves y descripción nos aparezca un error en el navegador. Esto ocurre porque seguramente tenemos los enlaces permanentes activados y al crear un nuevo custom post de tipo book se debe regenerar nuestra estructura de enlaces.

Si estamos desarrollando un plugin, podemos forzar la regeneración al activar/desactivar el mismo, utilizando este código:

Si es parte de nuestro theme y no un plugin, podemos ir a  Ajustes » Enlaces permanentes y guardar nuevamente las preferencias. Otra opción es poner flush_rewrtie_rules() en functions.php, recargar la página y luego eliminar el código. No es conveniente regenerar cada vez que cargue la página, por un tema obvio de rendimiento.

Conclusiones

Los meta box nos abren un mundo de posibilidades. El ejemplo mostrado es solo la punta del iceberg. Con un poco de práctica podrás ir a más y crear nuevas funcionalidades en tu contenido.

Recursos

Deja un comentario