ProgramandooIntentándolo

Como crear distintos tipos de post en WordPress dependiendo de la categoría

Hace unos días me encontré en la necesidad de crear diferentes tipos de post para una web que estoy haciendo en la que la gran parte de los artículos serán recetas pero no todos y como necesitaba usar fragmentos enriquecidos (Rich Snippets) para que cuando se haga una búsqueda en Google aparezcan la foto y otros datos interesantes y algunos de estos datos están en la cabecera de artículos como el nombre del autor, la fecha de publicación o el número de comentarios.

La solución poner el código necesario en el single.php, pero como no todos los artículos serian recetas pues no era una opción valida por lo que buscando vi que había plugins para usar Rich Snippets pero como era de esperar rompen el estilo de la web por lo que tendría que modificar el estilo y la forma en la que se muestran las cosas quitar/poner listas, cambiar orden de los elementos, etc. y para eso mejor crearlo desde 0.

La siguiente opción es crear tipos de contenido personalizado (Custom Post Types) y con esto si que podemos hacer lo que queramos pero es complejo porque estos nuevos tipos de contenido no apareceran en nuestra página principal, en las de las categorías o por ejemplo en los artículos recientes como los de la barra lateral de esta web por lo que otra vez demasiado trabajo para poca cosa.

Finalmente encontré una opción sencilla pero suficiente para casos como este o casos en los que por ejemplo se quiera simplemente cambiar el estilo de los post dependiendo de la categoría en la que estén, del autor o de lo que nos parezca.

Cambiar el estilo del post dependiendo de la categoría

Para esto lo que hay que hacer es modificar el contenido de single.php para que en lugar de mostrarse el articulo directamente se haga una comprobación por ejemplo de la categoría y dependiendo de la categoría a la que pertenezca usar una u otra representación para el post y esta tan sencillo como esto:


<?php
    $post = $wp_query->post;
    if ( in_category('recetas') ) {
        include(TEMPLATEPATH . '/single-recetas.php'); }
    elseif ( in_category( array( 'fotos', 'imagenes', 'videos'))) {
        include(TEMPLATEPATH . '/single-multimedia.php'); }
    elseif ( in_category('3') ) {
        include(TEMPLATEPATH . '/single-consejos.php'); }
    else {
        include(TEMPLATEPATH . '/single-default.php');
    }
?>

Con la función in_category() comprobamos si el post pertenece o no a una categoría y en función de esto cargamos el archivo correspondiente para esa categoría que puede tener el nombre que nosotros queramos aunque sería aconsejable ponerle un nombre descriptivo para no volvernos locos en un futuro. Y así de sencillo podemos personalizar como se mostrará los artículos de cada categoría.

Cambiar el estilo del post dependiendo del autor

De igual forma que para el caso de las categorías es necesario sustituir el código de single.php por el siguiente:


<?php
    $post = $wp_query->post;
    if ( get_the_author() == 'pepito' ) {
        include(TEMPLATEPATH . '/single-post-pepito.php'); }
    else {
        include(TEMPLATEPATH . '/single-default.php');
    }
?>

Y con esto ya podemos personalizar el estilo de los post dependiendo de quien sea su autor.

Así de sencillo es personalizar el single.php para distintas categorías, autores o lo que tu quieras.