Entradas y taxonomías (II) Registrando tipos de entradas personalizados

Ya hemos aprendido suficiente como para empezar a obtener algunos resultados y poder tocar el código, aunque todavía es pronto para hacer plugins y temas ya podemos por ejemplo crear nuestros tipos de entradas personalizados, para ello, lo único que debemos de hacer es irnos a nuestro archivo functions.php y utilizar la función register_post_type() que tiene dos parámetros:

  • $pos_type: que hace referencia al nombre de la entrada, que solo debe tener minúsculas y no más de 20 caracteres
  • $args: na matriz de argumentos que definen el tipo de entrada y otras opciones.

Por ejemplo si queremos hacer un nuevo tipo de entrada de productos tendriamos que ir a nuestro archivo functions.php y añadir el siguiente código:

//añadimos la accion que activa nuestra funcion
add_action ('init', 'registrando_mis_tipos_de_entradas');
//esta función es la que verdaderamente establece el tipo de entrada
function registrando_mis_tipos_de_entradas(){
	register_post_type ('productos',
	array(
		'labels' => array (
			'name' = 'Productos'),
		'public' => true,
	));
}

productosDe esta forma veremos como aparece en el margen izquierdo de nuestro wordpress el nuevo tipo de entradas que hemos definido, tal y como vemos en la imagen.

Este nuevo tipo de entrada presenta automaticamente las opciones de editar, ver todas… de forma simple y sencilla, pero podemos introducir multitud de argumentos diferentes en el registro de nuestro tipo de entrada personalizado:

public

Indica si un tipo de entrada esta disponible de forma publica en el escritorio de administración. De forma predeterminada se aplica como false. Los ajustes predetemrinados de otros argumentos como show_ui, exclude_from_search, publicly_queryable y show_in_nav_menus heredan de este valor.

show_ui

Determina si se crea o no un IU predeterminada en el escritorio de WP para administrar este tipo de entrada, utiliza de forma predeterminada el valor de public.

publicly_queryable

Determina si podemos el contenido de la entrada se puede consultar de forma pública en nuestro sitio web. Si esta como false, las consultas de los usuarios a este tipo de entrada devolverán un error 404. Tiene de forma predeterminada el valor de  public.

exclude_from_search

Permite excluir el tipo de entradas de las búsquedas que realiza wordpress. De forma predeterminada toma el valor de public

show_in_nav_menus

Determina si el tipo de entrada se puede seleccionar a través de la función de la administración de menús de WP. De forma predeterminada toma el valor de public

supports

Nos permiten definir los metacuadros que aparecen en pantalla al crear o editar un nuevo tipo de entrada. por defecto nos da el título y el editor pero hay más:

  • title: el título de la entrada
  • editor: muestra el editor de contenido en la pantalla de edición de contenido con un sistema de transferencia de medios
  • author: Selecciona un cuadro para elegir el autor de la entrada
  • thumbnail: Cuadro con la imagen de la entrada
  • excerpt: Muestra un editor de fragmentos en la pantalla de edición del tipo de entrada
  • comments: Indica si se permiten comentarios en las entradas de este tipo
  • trackbacks: Indica si se permiten trackbacks y pingbacks en el tipo de entradas
  • custom-fields: Muestra el cuadro de área de edición de campos personalizados
  • page-attributes: Muestra el cuadro de atributos para seleccionar el orden de las entradas. Para que funcione es necesario establecer el argumento hierarchical en true.
  • revisions: Muestra el cuadro de revisiones de entradas
  • post-formats: muestra un cuadro con los formatos de entrada registrados.

labels

Define una matriz de etiquetas que representa su tipo de entrada en el escritorio administrativo.

hierarchical

Permite indicar si el tipo de entrada es jerárquico, lo que permite que disponga d eun estructura en forma de árbol como las páginas, por defecto su valor es false

has_archive

Permite disponer de una página de archivo, similar a la página de entradas, que muestra las últimas entradas del blog. Esto permite mostrar una lista de las entradas en función del orden definido en el archivo de plantilla del tema.

can_export

Determina si el contenido del tipo de entrada se puede exportar a reavés de la función de exportación integrada de WordPress, situada en Herramientas>exportar. El valor predeterminado es true

taxonomies

Indica una matriz de taxonomías registradas que añadir al tipo de entrada, como por ejemplo category y post_tag. De forma predeterminada no ay taxonomias adjuntas a un tipo de entrada personalizado.

menu_position

Permite establecer la posición del menú del tipo de entrada en el menú de administración. POr defecto siempre se muestran debajo de comentarios

menu_icon

Define un icono de menú personalizado para el tipo de entrada, por defecto se utiliza el de las entradas

show_in_menu

Determina si se muestra o no el menú de adminsitración, aceptando tres valores, true, false o una cadena que puede ser una página de nivel superior o establecer la cadena con el parámetro menu_slug para añadir el tipo de entrada como un elemento de submenu a un menú personalizado ya existente. Por defecto toma el valor de show_ui.

show_in_admin_bar

Indica si el tipo de entrada personalizado se muestra o no en la barra de administración de WP. Por defecto toma el valor de show_in_menu

capability_type

Indica una cadena o matriz de las prestaciones del tipo de entrada. Por defecto post.

capabilities

Una matriz de las prestaciones personalizadas necesarias para editar, eliminar, ver y publicar entradas de este tipo.

query_var

Establece la variable de consulta ara entradas de este tipo. Por defecto su valor es true, y se establece con $post_type

rewrite

Crea los enlaces permanentes exclusivos, lo que permite personalizar el slug.

Este argumento puede ser true, false o una matriz de valores con los siguientes valores:

  • slug: establece un slug como enlace permanente, por defecto su valor es el de $post_type
  • with_front: indica si el tipo de entrada debe usarse como base para los ajustes de enlaces permanentes
  • pages: indica si los enlaces permanentes sirven para la paginación, por defecto es true.
  • feeds: indica si se crea un enlace permanente de feed para este tipo de entrada, por defecto toma el valor de has_archive.

Una vez que hemos visto todos los argumentos podemos crear ya un nuevo tipo de entrada de forma sencilla tal y como vemos en el siguiente ejemplo:

add_action ('init', 'registrando_mis_tipos_de_entradas');
function registrando_mis_tipos_de_entradas(){

	$args = array(
		'public' => true,
		'has_archive' => true,
		'taxonomies' => array('category'),
		'rewrite' => array('slug'=>'producto'),
		'supports' => array('title', 'editor', 'author', 'thumbnail', 'comments')
		);
	register_post_type ('productos', $args);
}

En este ejemplo ponemos public  como true, permitimos que tenga archivo al activarle has_archive, permitimos que tenga taxonomía por categorías, cambiamos el slug por defecto y añadimos el titulo, el autor, la imagen y cuadros de comentarios en las páginas de creación y de edición de las entradas.

Por hoy ya esta bien, se me ha ido de mano la entrada, pero quería dejar todos los argumentos juntos en un unico post, por lo que solo quiero dejar un último apunte, y es que si queréis saber más sobre la función register_post_type() entréis en el codex, que tiene mucha más información.