Extendiendo WordPress con Custom Post Types (I)

04/02/2015 | Clara

Si hay algo que cuesta encontrar en Internet es documentación en castellano relativa a algunos temas muy concretos de desarrollo web con los que en VALBHY nos topamos día a día. A modo de memoria y con ánimo de cubrir en cierta medida ese vacío, nace esta serie de artículos, en los que iremos detallando nuestras experiencias con frameworks de desarrollo, plugins, librerías, gestores de contenido, etc.

Y así es como entramos de lleno con WordPress…

Desde su primera versión en 2004, WordPress ha estado asociado inevitablemente a la creación de blogs. Sin embargo hace ya tiempo que dejó de ser un software básico de administración de bitácoras para convertirse en un completo sistema de gestión de contenidos con enormes potenciales.

Está claro que un problema no tiene una única solución y que serán las necesidades (y el presupuesto) de cada cliente o proyecto las que determinarán que la balanza bascule hacia la creación de un sistema de administración de contenidos propio, o hacia la selección, personalización y extensión de un CMS como WordPress.

De lo que no cabe duda, es que la implementación de la función register_post_type(), en la versión 2.8 (2009), para crear tipos de posts personalizados y permitir la generación de una amplia variedad de contenido, situó a WordPress a la cabeza de los sistemas de gestión de contenidos y su uso no ha hecho más que crecer desde entonces.

Qué son los Custom post types o tipos de posts personalizados

Por defecto, WordPress tiene los siguientes tipos de post: entradas (Post Type: ‘post’), páginas (Post Type: ‘page’), adjuntos (Post Type: ‘attachment’), borradores (Post Type: ‘revision’) y menús de navegación (Post Type: ‘nav_menu_item’).

Detalle Base de Datos WP
Detalle de la base de datos de WordPress

Sin embargo es posible crear otro tipo de posts de acuerdo con las necesidades de nuestro proyecto: productos, libros, películas, miembros de un equipo, trabajos de un portfolio, reviews, etc. con las mismas características de cualquier tipo de post. De esta manera, al crearlos, aparecerán en nuestro escritorio de WordPress como ítem del menú, con sus categorías y tags (incluso podremos crear taxonomías propias) y su propia página de archivo:

http://misitio.com/mitipodepostpersonalizado/

El plugin Custom Post Type UI

Para crear nuevos tipos de post, como avanzábamos antes,  se utiliza la función register_post_type() en el archivo functions.php.

Sin embargo, para todos aquellos a quienes tocar el código les provoca un desasosiego extremo, tenemos buenas noticias: existe un plugin que lo hace por tí.

Siempre es más ligero hacerlo manualmente, pero si estás empezando a familiarizarte con los tipos de post personalizados, esta es una muy buena opción.

1. Instalamos el plugin y lo activamos.
2. Añadimos nuestro nuevo tipo de post -> Add New.

Custom post type plugin
Menu del plugin – CPT UI

3. Pongamos por ejemplo, que estamos haciendo un portfolio y queremos un nuevo tipo de post para los proyectos y trabajos de ese portfolio. Rellenaríamos los campos correspondientes con Post Type Name, Label, Singular Label, Description y a continuación clicaríamos el link Advanced Options.

Crear custom post type
Rellenamos los campos para crear nuestro nuevo tipo de post: “proyecto”

4. En Advanced Options la opción Has Archive es importante para que se muestren los posts en la página de archivo correspondiente. Por defecto, es “False” y la dejaremos así por ahora. A continuación indicaremos los campos que queremos que soporte (por defecto vienen todos señalados).

Tipos de campos soportados
Tipos de campos soportados

Clicamos Create Custom Post Type y ¡listo! Ya aparece como nuevo ítem en el menú de la izquierda y podemos empezar a añadir proyectos.

Menu escritorio WordPress
Menu ítem “Proyectos” en el escritorio WordPress

5. Si quisiéramos asignar a los proyectos categorías y etiquetas, como hacemos con cualquier entrada, volveríamos a editar el tipo de post, clicando Manage post type > Edit > Advanced Options y seleccionaríamos Categorías y Etiquetas en Build-in Taxonomies.

Taxonomías
Taxonomías básicas por defecto: categorías y tags

6. Como hemos seleccionado la opción Has archive -> False, automáticamente el listado de proyectos se mostrará en la plantilla archive.php y el detalle de proyecto lo hará en single.php del tema en cuestión . Si quisiéramos que, tanto el listado como el detalle, mostraran en plantillas propias, porque queremos que se presente de una manera diferente a las entradas convencionales, en primer lugar, tendríamos que crear sendas plantillas nuevas utilizando el ‘slug’ del tipo de post creado, en este caso: archive-proyecto.php y single-proyecto.php. Aquí tienes más info sobre la jerarquía de plantillas en WordPress. Y a continuación volver a la pantalla de edición de nuestro tipo de post personalizado e indicar, en opciones avanzadas, Has Archive -> True. Lo que indica que el tipo de post tiene su propia plantilla de archivo diferente a archive.php.

Si te has quedado con ganas de más, en próximos artículos veremos cómo mostrar los nuevos tipos de post en portada o en cualquier otro lugar de nuestro sitio web.

2 thoughts on “Extendiendo WordPress con Custom Post Types (I)

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *