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’).

bbdd-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/mi-tipo-de-post-personalizado/

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 ti.

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.

create-custom-post-types1
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”, así que marcaremos esa opción como “True” . A continuación indicaremos los campos que queremos que soporte (por defecto vienen todos señalados).

supports
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.

custom-post-type-menu

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.

6. Por último, hay que tener en cuenta que el listado de “proyectos” se mostrará por defecto en la plantilla archive.php y la ficha 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, 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.

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 comentarios en “Extendiendo WordPress con Custom Post Types (I)

Deja un comentario

Tu dirección de correo electrónico no será publicada.