Cómo implementar tipos de publicaciones personalizadas y campos personalizados en WordPress

Publicado: 2014-06-10

WordPress ya no se limita solo a los blogs: es un sistema de administración de contenido con todas las funciones capaz de mostrar y formatear cualquier tipo de contenido que le proporcione. Entonces, hablemos de dos excelentes formas de extender WordPress: tipos de publicaciones personalizadas y campos personalizados.

Tipos de publicaciones personalizadas

Parece que nuestro sitio de prueba, Monday Morning Mug (que usamos en nuestra publicación de blog de integración de correo electrónico), tiene un nuevo problema con el que lidiar. Nuestro blog se ha vuelto tan grande que hemos contratado a un personal de revisión de café de tiempo completo. Han estado ocupados preparando café y escribiendo reseñas. Han estado publicando estas reseñas en el blog, pero nuestros lectores nos dijeron que todas estas reseñas interfieren con el contenido "real" de nuestro blog. Necesitamos hacer un lugar separado para nuestras reseñas de café, pero las páginas normales de WordPress simplemente no van a ser suficientes. Los revisores también sugirieron que les encantaría tener un lugar para almacenar información fácilmente, como el país de origen del café y las notas de cata, en el sitio web. Esto suena como un uso perfecto para un tipo de publicación personalizada, una característica de WordPress que nos permite crear nuevas secciones de contenido en nuestro sitio.

Los tipos de publicaciones personalizadas son increíblemente flexibles y se pueden implementar para cualquier tipo de contenido: citas, videos y diferentes tonos de pintura son ejemplos de lo que podría ser un tipo de publicación personalizada.

Vamos a querer agregar una nueva sección de nuestro sitio web en el subdirectorio /coffees/ que está lleno de reseñas de café. Esto va a requerir un poco de disputa de código, pero debería ser un proceso relativamente fácil.

Nota: para hacer esto, deberá poder editar los archivos .php en su directorio de instalación de WordPress, que generalmente requiere acceso FTP/SFTP/SSH. Asegúrese de tener esto antes de continuar.

Cada tema de WordPress puede utilizar un archivo functions.php, que se encuentra en:
/wp-content/themes/your_current_theme/functions.php
Este archivo generalmente se usa para cambios de sitio específicos del tema, así como para modificaciones de sitio personalizadas más pequeñas, como la que estamos a punto de hacer.

Nota: agregaremos código al archivo functions.php , lo que significa que es específico del tema. Si agrega esto a su archivo functions.php y luego cambia el tema en su instalación de WordPress, eliminará el tipo de publicación personalizada de su sitio web. Puede mantener tipos de contenido personalizados utilizando un complemento, como la interfaz de usuario de tipo de publicación personalizada.

1. Abra su archivo functions.php y agregue el siguiente código al final del archivo:

function create_new_post_type() {
$labels = array(
'name' 			 => __('Coffee Reviews'),
'singular_name'  => __('Coffee Review'),
);
$args = array(
'labels'      	 => $labels,
'public' 	  	 => true,
'has_archive' 	 => true,
'menu_position'  => 5,
'description'    => 'Reviews And Types of Coffee',
'rewrite'     	 =>
array('slug' => 'reviews'),
'supports'    	 =>
array( 'title',
'comments', 'editor',
'thumbnail', 'custom-fields', 'revisions'),
);

register_post_type('Reviews', $args);
}
add_action('init', 'create_new_post_type');

Debido a que no nos gusta especialmente utilizar código sin una idea de lo que hace, analicemos lo que hace este código.

Nota: Es posible que haya notado que $labels y $args se definen fuera de la función register_post_type() aunque se pasen como argumentos a esa función más adelante. Este método ayuda a la organización y la legibilidad, pero puede condensar ambas matrices en un solo argumento. Simplemente sería más difícil de entender.

La matriz $args contiene todos los detalles que necesitamos para definir nuestro nuevo tipo de contenido. Esto es lo que hacen:

  • 'labels' : una matriz que define lo que llamaremos nuestro tipo de contenido. Hay muchas más etiquetas disponibles que puede usar, y una lista completa está disponible en la documentación aquí.
  • 'public' : un valor booleano que define si la publicación se puede ver o no fuera del panel de administración.
  • 'has_archive' : si es verdadero, este booleano creará un archivo de este tipo de publicaciones personalizadas, al igual que las publicaciones estándar de WordPress.
  • 'menu_position' : este número entero cambia el lugar donde va el botón de navegación de la publicación personalizada. El número 5 indica que irá directamente debajo de la pestaña de publicaciones. Para obtener una lista completa de códigos numéricos, consulte la misma documentación.
  • 'description' : describe el tipo de publicación.
  • 'rewrite' : esto cambia el slug para que sea "revisiones", lo que ayudará a crear una estructura de enlaces permanentes utilizable. (También puede ser booleano; consulte la documentación para obtener más información).
  • 'supports' : una matriz que define qué funciones nativas de edición/publicación de WordPress están habilitadas. Este es bastante flexible y hay muchas más opciones, pero necesitaremos al menos custom-fields y un editor para esta publicación.

A continuación, se llama a la función register_post_type() , que crea un nuevo tipo de publicación llamado Reseñas utilizando la matriz de argumentos que acabamos de definir.

Finalmente, tenemos que llamar a una última función para completar el proceso. register_post_type() siempre debe inicializarse con la acción 'init'. Podemos conectar nuestra nueva función a init llamando

add_action(‘init’, ‘create_new_post_type’);

¡Impresionante! Ahora, si iniciamos sesión en nuestro panel de administración de WordPress, deberíamos ver una nueva pestaña a la izquierda llamada "Reseñas".

opiniones_de_cafe

2. Ahora que tenemos Reseñas configuradas como un tipo de publicación personalizada, debemos actualizar la estructura de enlaces permanentes para que nuestros lectores puedan encontrar fácilmente nuestras publicaciones. Además, hace que nuestras URL sean mucho más fáciles de leer y amigables con el SEO.

3. En la barra de menú Configuración -> Enlaces permanentes, encontrará un montón de opciones comunes para las estructuras de enlaces permanentes. Vamos a cambiar la configuración personalizada para que coincida con el campo /%category%/%postname%/

Esto significa que WordPress generará URL para que coincidan con la categoría y el título de nuestras publicaciones.

Nota: Este es un cambio en todo el sitio y afectará sus publicaciones en otras categorías.

enlace_permanente_personalizado

Ahora echemos un vistazo a la URL de una publicación que escribieron nuestros revisores para el café Sumatra Ketiara:

sumatra_permalink

¡Fantástico! Echa un vistazo a esa URL. Tenemos reseñas separadas en su propio directorio y la URL está escrita en inglés sencillo. Ahora nuestros lectores saben exactamente lo que obtendrán cuando hagan clic en un enlace.

Campos Personalizados

Aunque a nuestros revisores les encanta la nueva sección de Reseña, nos pidieron que incorporáramos algo en el back-end que les permita ingresar información común que escriben sobre cada café, como el país de origen y las notas de cata. Esto suena como el uso perfecto de campos personalizados que, afortunadamente, son muy fáciles de implementar.

1. En un editor de revisión individual, verá el botón de opciones de pantalla en la esquina superior derecha del editor:

opciones_de_pantalla

que se expande a esto cuando se hace clic:

screen_options_dropdown

2. Marque la casilla Campos personalizados.

Debajo del editor, verá el cuadro Campos personalizados que acabamos de habilitar.

custom_fields_blank

3. Puede escribir cualquier cosa en ambos cuadros; todo lo que escriba y agregue en el campo Nombre se guardará para su uso posterior. Aquí, enumeramos el área y el país de donde proviene nuestro café.

custom_fields_region

Los campos personalizados hacen que sea increíblemente fácil estandarizar los datos importantes para una categoría en cada publicación en un lugar separado. Ahora solo tenemos que hacer que esa información se muestre en nuestra revisión.

4. Vamos a agregar esta etiqueta de código a uno de nuestros documentos temáticos:

<br /><?php the_meta(); ?><br />

Nota: En este ejemplo, vamos a colocar esta etiqueta en nuestro archivo content.php, pero deberá encontrar una ubicación adecuada para colocar su tabla de valores. También debe diseñar esta etiqueta para que coincida con el resto de su tema, sobre el que puede leer más aquí.

Volviendo a nuestro blog, podemos ver que nuestra etiqueta ha insertado una lista en nuestra reseña.

campo_personalizado_ejemplo

¡Ostentoso! Ahora nuestros lectores y nuestros revisores están felices. Pudimos crear un tipo de publicación personalizada que nos permitió guardar reseñas sobre el café, y pudimos darles a nuestros revisores un lugar para almacenar toda su información importante para cada reseña diferente.