Cómo registrar un tipo personalizado de artículo en WordPress
La función register_post_type
registra un tipo de artículo en WordPress.
Preparación
Supón un sitio web para administrar la colección de libros en una librería. Por cada libro, el sitio web debe manejar información como título, autor, año, resumen, ISBN, editorial y precio. El sitio web también debe permitir la búsqueda de libros utilizando cualquier campo.
Tipos personalizados de artículos
Los tipos de artículos son una forma de referirse a cada tipo de contenido en un sitio web WordPress. De forma predeterminada, WordPress viene con tipos de artículos como Entrada, Página y Medio; pero puedes crear otros tipos de artículos. Estos tipos de artículos definidos por el usuario se denominan «tipos personalizados de artículos».
Los tipos personalizados de artículos han extendido WordPress más allá de una herramienta para hacer blogs. Mediante el uso de tipos personalizados de artículos y metadatos de artículos, puedes adaptar WordPress a prácticamente cualquier situación. Desde un blog hasta una tienda en línea que contenga millones de productos.
Registro
Los tipos personalizados de artículos se registran en WordPress. Nunca se guardan en la base de datos. Desde una perspectiva básica, registrar un tipo de artículo significa agregar un nuevo elemento a la variable global $wp_post_types
. Esta variable es un arreglo asociativo que almacena todos los tipos de artículos registrados en WordPress.
La función register_post_type
registra un tipo de artículo. Debe llamarse durante la acción 'init'
. Esta función toma como entrada el identificador del tipo de artículo y un arreglo asociativo que contiene los atributos del tipo de artículo.
El identificador de un tipo de artículo:
- No debe superar los 20 caracteres
- Debe tener un prefijo para evitar conflictos
- Solo debe contener caracteres alfanuméricos en minúsculas, guiones bajos y guiones normales
La lista de atributos soportados es grande. La mejor manera de mantenerse al día con los últimos cambios es consultando el bloque PHPDoc en el código fuente de la función.
Ejemplo
Anteriormente se presentó un sitio web para administrar la colección de libros en una librería. El primer paso para resolver este problema es registrar el tipo personalizado de artículo Libro, «Book» en inglés.
/*
* Registers the custom post type Book.
*/
function ns_register_book_cpt(){
// See all possible labels in the PHPDoc of the function get_post_type_labels
$labels = array(
'name' => __('Books', 'ns'),
'singular_name' => __('Book', 'ns'),
'menu_name' => __('Books', 'ns'),
'all_items' => __('All Books', 'ns'),
'add_new' => __('Add New', 'ns'),
'add_new_item' => __('Add New Book', 'ns'),
'edit_item' => __('Edit Book', 'ns'),
'new_item' => __('New Book', 'ns'),
'view_item' => __('View Book', 'ns'),
'view_items' => __('View Books', 'ns'),
'search_items' => __('Search Books', 'ns'),
'not_found' => __('No books found.', 'ns'),
'not_found_in_trash' => __('No books found in Trash.', 'ns'),
'archives' => __('Book Archives', 'ns'),
'filter_items_list' => __('Filter books list', 'ns'),
'items_list_navigation' => __('Books list navigation', 'ns'),
'items_list' => __('Books list', 'ns')
);
// See all possible attributes in the PHPDoc of the function register_post_type
$args = array(
'label' => __('Books', 'ns'),
'labels' => $labels,
'public' => true,
'exclude_from_search' => false,
'publicly_queryable' => true,
'show_ui' => true,
'show_in_nav_menus' => true,
'show_in_menu' => true,
'show_in_admin_bar' => true,
'hierarchical' => false,
'supports' => array('title', 'editor', 'author'),
'taxonomies' => array('post_tag'),
'has_archive' => true,
'rewrite' => array('slug' => 'books'),
'query_var' => 'book'
);
register_post_type('ns_book_cpt', $args);
}
add_action('init', 'ns_register_book_cpt', 10, 0);
Este tipo de artículo soporta las funcionalidades 'title'
, 'editor'
y 'author'
. Utilizaremos las funcionalidades 'title'
y 'editor'
para ingresar el título y el resumen de cada libro. Para ingresar los demás campos, necesitamos utilizar metadatos de artículos.
Administración
Si los atributos show_ui
y show_in_menu
son TRUE
, WordPress crea automáticamente secciones en el área de administración para gestionar las entradas del tipo de artículo.
Traduce las cadenas que hayan en el código para que se vean en español.
Problemas
Si aparece el error «Página no encontrada» al intentar visitar un libro o una publicación de cualquier otro tipo personalizado de artículo, aplica este procedimiento:
- Abre el área de administración
- Ve al menú Ajustes
- Ve al submenú Enlaces permanentes
- Haz clic en el botón Guardar cambios
Saber más
Te recomiendo los otros tutoriales de esta serie para que sepas más sobre los tipos de artículos en WordPress.
- Tipos de artículos en WordPress
- Cómo registrar un tipo personalizado de artículo en WordPress
- Cómo registrar un tipo personalizado de artículo utilizando un plugin en WordPress
- Cómo desregistrar un tipo personalizado de artículo en WordPress
- Cómo modificar un tipo de artículo en WordPress
Ejercicio
Registra el tipo personalizado de artículo Película, «Movie» en inglés. Ten en cuenta que este tipo de artículo:
- Es público
- Soporta las funcionalidades
'title'
,'editor'
,'excerpt'
,'author'
, y'revisions'
- Soporta las taxonomías Etiqueta y Categoría
- Tiene archivo y está disponible en /movies/
Código fuente
El código fuente desarrollado en este tutorial, incluyendo una respuesta al ejercicio, está disponible aquí.
Comentarios