Custom Post Types de WordPress

Si usas WordPress como gestor de contenidos sabrás que, por defecto, hay unos cuantos tipos de contenidos diferentes: páginas, entradas, etc. Pero, ¿cómo se puede crear otro tipo de contenido en WordPress que no sea uno de estos tipos? Los Custom Post Types de WordPress son la solución.

¿Qué son los Custom Post Types de WordPress?

WordPress guarda siempre todos los contenidos en la misma tabla (wp_posts) de la base datos pero cada contenido está «etiquetado» según el tipo de contenido que sea: post, page, etc. (columna post_type de la citada tabla). ¿Para qué sirve esta «etiqueta» si el editor es el mismo en todos los tipos? Sencillo, dependiendo del tipo de contenido podrás crear campos personalizados, filtrar en tus búsquedas mediante wp_query, etc. de manera que solo afecte al tipo de contenido que quieras.

¿Cómo genero los Custom Post Types?

Como casi siempre en WordPress, hay dos maneras: programar o utilizar algún plugin diseñado para ello.

Programando

Realmente no llamaría programar a esta tarea, es más bien configurar. Esta tarea de configuración la podemos hacer tanto en el functions.php como en un plugin personalizado. En principio, la opción más sencilla es mediante el functions.php pero si tienes la idea de usar este Custom Post Type en más proyectos puede ser buena idea meterlo en un plugin.

Si vamos al Codex de WordPress vemos que es realmente sencillo. En su versión más sencilla bastaría con añadir el siguiente código:

function create_post_type() {
  register_post_type( 'products',
    array(
      'labels' => array(
        'name' => __( 'Products' ),
        'singular_name' => __( 'Product' )
      ),
      'public' => true,
      'has_archive' => true,
    )
  );
}
add_action( 'init', 'create_post_type' );

Por una parte creamos la función create_post_type() y por otra la ejecutamos en el init mediante add_action( ‘init’, ‘create_post_type’ ). Si no estás familiarizado con PHP puede que te interese mi curso de PHP.

En la función create_post_type() es donde definimos nuestro nuevo Custom Post Type. En este ejemplo tan solo definimos las etiquetas name (nombre del contenido) y singular_name (nombre del contenido en singular) , establecemos mediante public el nivel de acceso (si es visible desde el back-office) y con has_archive si se permiten o no archivos.

Como puedes imaginar, hay muchas más opciones a configurar, tanto etiquetas como parámetros, pero ésto sería lo mínimo para empezar a trabajar con tu nuevo tipo de contenido.

Plugin

Como decía más arriba, además de programando, puedes configurar los Custom Post Types con algún plugin. Uno de los mejores que he visto es Custom Post Type UI.

Una vez que tenemos nuestro Custom Post Type configurado, ya lo podremos usar en el back-office. En el front-office tendremos que programarnos un archivo single (ej. single-products.php),  una plantilla de contenido, un widget, o cualquier otro elemento donde utilizarlo.

Espero que haya sido de utilidad esta breve introducción a los Custom Post Type. Si tienes cualquier pregunta o aportación no dudes en dejar un comentario.

Daniel:
Related Post