Hoy he dado un salto a la piscina y me he decidido a estudiar cómo poder crear aquello que llevo tiempo viendo en los temas de wordpress de portfolio: un tipo de entradas personalizadas (que en inglés es Custom Post Types). Para los que no lo sepan es crear un tipo diferente de entradas pero no de tipo post sino de tipo XXXXX (el que quieras) en nuestro caso: proyecto.

Mi sorpresa ha sido lo realmente fácil que era hacer este tipo de customización. Vamos a verlo:

function post_type_proyecto() {
	$labels = array(
		'name' => __( 'Proyectos' ),
		'singular_name' => __( 'Proyectos' ),
		'add_new' => __( 'Añadir nuevo' ),
		'add_new_item' => __( 'Añadir nuevo proyecto' ),
		'edit' => __( 'Editar' ),
		'edit_item' => __( 'Editar proyecto' ),
		'new_item' => __( 'Nuevo proyecto' ),
		'view' => __( 'Ver proyecto' ),
		'view_item' => __( 'Ver proyecto' ),
		'search_items' => __( 'Buscar proyecto' ),
		'not_found' => __( 'No se han encontrado proyectos' ),
		'not_found_in_trash' => __( 'No se han encontrado proyectos en la papelera' ),
		'parent' => __( 'Proyecto predecesor' )
	);
 
	$supports =  array( 
		'title', 
		'editor', 
		'thumbnail', 
		'custom-fields', 
		'revisions' 
	);
 
	$args =  array( 
		'labels' => $labels,
		'public' => true, 
		'show_ui' => true,
		'exclude_from_search' => false,
		'menu_position' => 5,
		'menu_icon' => get_bloginfo('template_url').'/images/icon-press.png',
		'show_in_admin_bar' => true,
		'supports' => $supports,
		'has_archive' => true
	);
 
	register_post_type( 'proyecto', $args );
	flush_rewrite_rules();
}

En este caso hemos definido un tipo de taxonomía de tipo categorías (como la caja que nos sale normalmente para las categorías de nuestros posts). Para crear una caja como la de los tags tendríamos que modificar el parámetro ‘hierarchical’ y ponerlo a false.

Para saber más sobre las taxonomías consulta la página de wordpress oficial.

A continuación añadimos la llamada de la función que acabamos de definir:

add_action('init', 'post_type_proyecto');

¡Y ya lo tenemos listo!

Sólo hace falta decir que mediante…

<?php echo get_post_type($post->ID); ?>

…podremos saber si está cargando un post u otro. Pero la forma más sencilla de formatear una página de un post personalizado es crear en la carpeta de nuestra plantilla un archivo que se llama single-nombredelcustomposttype.php (en nuestro ejemplo que hemos ido poniendo sería: single-proyecto.php).

Para mostrar los posts en plan index.php tendremos que crear un template parecido al index (o con el formato que le queramos dar) con una diferencia: que tendrá esta línea antes del if(have_posts()):

<?php query_posts( array( 'post_type' => 'proyecto' ) ); ?>

Esta plantilla se la asignamos a una página y ¡listo!

Categorías: Wordpress
Si necesitas una url corta puede usar: codygo.es/695

Deja un comentario