WordPress no es exclusivamente para armar blogs, es un CMS, por sus siglas en inglés es un vemos que es un sistema que administra contenidos. Por defecto, WordPress viene con publicaciones y páginas como los principales tipos de contenido. Sin embargo, puede crear tantos tipos de contenido personalizado como querramos, con lo que denomina custom post types.
¿Qué es una publicación personalizada en WordPress?
Son como un post, entrada, o page, página, pero podemos especificar a qué corresponde según la personalización que necesitemos, como el gran clásico ejemplo podemos armar un tipo de posteo: películas.
¿Cómo crear custom post types?
Agregando código en functions.php del tema! Vamos con el ejemplo de películas.
function create_posttype() {
register_post_type( 'peliculas',
// Opciones
array(
'labels' => array(
'name' => __( 'Peliculas' ),
'singular_name' => __( 'Pelicula' )
),
'public' => true,
'has_archive' => true,
'rewrite' => array('slug' => 'peliculas'),
)
);
}
add_action( 'init', 'create_posttype' );
Hay muchas más opciones, vamos a repasarlas, usando como ejemplo el theme twentythirteen:
$labels = array(
'name' => _x( 'Peliculas', 'Post Type General Name', 'twentythirteen' ), //nombre plural del tipo de posteo
'singular_name' => _x( 'Pelicula', 'Post Type Singular Name', 'twentythirteen' ), //nombre del tipo de posteo
'menu_name' => __( 'Peliculas', 'twentythirteen' ), //nombre que aparecera en el menu
'parent_item_colon' => __( 'Pelicula Principal', 'twentythirteen' ), //cuando hay una pelicula PARENT, es decir que hay peliculas que hacen referencia a otro posteo
'all_items' => __( 'Todas las peliculas', 'twentythirteen' ), //todos los posteos personalizados
'view_item' => __( 'Ver pelicula', 'twentythirteen' ),
'add_new_item' => __( 'Agregar pelicula', 'twentythirteen' ),
'add_new' => __( 'Agregar', 'twentythirteen' ),
'edit_item' => __( 'Editar pelicula', 'twentythirteen' ),
'update_item' => __( 'Actualizar pelicula', 'twentythirteen' ),
'search_items' => __( 'Buscar pelicula', 'twentythirteen' ),
);
¿Como mostrar el tipo de posteo que armamos?
Bien podemos en Apariencia > Menus, armar un link personalizado y ya o bien podemos armar un template.
De otra manera tomemos en cuenta que podemos hacerlos aparecer en la pantalla principal. Veamos:
add_action( 'pre_get_posts', 'agregar_posteos_personalizados' );
function agregar_posteos_personalizados( $query ) {
if ( is_home() && $query->is_main_query() )
$query->set( 'post_type', array( 'post', 'peliculas' ) );
return $query;
}
Si manejas el código de WP_Query, como vimos antes, podes hacer así:
<?php
$args = array( 'post_type' => 'peliculas', 'posts_per_page' => 10 );
$the_query = new WP_Query( $args );
?>
<?php if ( $the_query->have_posts() ) : ?>
<?php while ( $the_query->have_posts() ) : $the_query->the_post(); ?>
<h2><?php the_title(); ?></h2>
<div class="entry-content">
<?php the_content(); ?>
</div>
<?php wp_reset_postdata(); ?>
<?php else: ?>
<p><?php _e( 'Sorry, no posts matched your criteria.' ); ?></p>
<?php endif; ?>
Ahora los posteos de películas están listos para ser mostrados 😉