Blog de programación, errores, soluciones

Chose Language:
Author: Admin/Publisher |finished | checked

Categorías en WordPress

En este post veremos como se crean las categorías en WordPress, subcategorías y como es el código que define una o varias categorías en un template.

Poner nuestros post en categorías es una buena forma de poder agrupar nuestros post y luego ser mostrados.

Las categorías son aplicables a los post, y es por esto que para crear una categoría se encuentra en la viñeta de Posts

En la sección categorías podemos ver como crear una nueva categoría y como poner esta o no como subcategoría de otra con parent category(categoría padre).

Como puede ver en este post he creado una categoria php con slug php-slug esto es para el siguiente ejemplo.

Cuando creo un post, puedo seleccionar la categoria(nombre especificado cuando creamos la categoria) pero el nombre que usa WordPress de la categoría en las urls es el slug.

Category Template

En WordPress podemos cambiar como se ve la página de categorías, ya vimos lo del loop de WordPress y como hacer una página index.php muy simple en este apartado veremos como realizar el archivo category.php

Recordemos que si WordPress no posee un archivo category.php cargara el archivo index.php tal cual esta explicado en jerarquías en los templates de WordPress.

Tomaré lo que hicimos en el post de loop y cambiaré ligeramente el código, este código de por sí ya es funcional en otras palabras pondrá la categoría que es de hecho, el ejemplo del slug en la url está usando ese archivo.

este icono se referira a la carpeta del template en esta sección
/category.php
<?php
/**this is a basic wordpress loop */

get_header();

if(is_category()):
    if ( have_posts() ) {

        // Load posts loop.
        while ( have_posts() ) {
            the_post();?>
            <a href="<?php the_permalink();?>">
            <h1><?php the_title();?></h1>
            </a>
            <?php the_content();
        }
    }
    else{
        echo "no post to be showed";
    }
endif;
get_footer();

Como puede ver en este ejemplo hemos agregado is_category esto chequea si esa categoría buscada existe para no tener que realizar el loop en vano.

Personalizando la categoría

Como vimos antes en Jerarquia de los templates las categorias pueden ser personalizadas utilizando el slug o el id sindo los archivos a crear de la siguiente manera

  • category-$slug.php
  • category-$ID.php

Hagamos una con slug por ejemplo para recetas, la categoría será postres asi pues le pondremos tanto el nombre como el slug postres.

Ahora debemos crear un category-postres.php, lo que haré en este category es personalizarlo un poco nada más para que tengas una idea y luego compararemos con la categoria php.

Pondré la siguiente imagen en nuestra categoría postres, para que se note bastante la diferencia

Luego de hacer esto deberemos entrar a category/postres en mi caso http://localhost/test/category/postres/

este icono se referira a la carpeta del template en esta sección

/category-postres.php
<style>
.header_postre{
    background:url('https://image.flaticon.com/icons/png/512/1477/1477733.png') no-repeat;
    background-size: 50px 50px;
}
h1{
    margin-left:50px;
}

<?php
/**this is a basic wordpress loop */

get_header();

if(is_category("postres")):
    echo "<div class='header_postre'><h1>";
    echo "Postres";
echo "</h1></div>";
    if ( have_posts() ) {

        // Load posts loop.
        while ( have_posts() ) {
            the_post();?>
            <a href="<?php the_permalink();?>">
            <h1><?php the_title();?>
            </a>
            <?php the_content();
        }
    }
    else{
        echo "no post to be showed";
    }
endif;
get_footer();

Funciones para categorías en WordPress

is_category($category)

Chequea si es la categoría asignada a la variable $category, por defecto el valor de $category es «», is_category nos permite estar sin parametro cuando estamos en una pagina de categorías y chequea si es una categoría.

get_categories()

Obtiene todas las categorías que se han ingresado en WordPress

get_the_category()

Retorna un array de objetos WP_Term.

Puedes obtener el id de categoria de la siguiente manera

$category = get_the_category();
echo $category[0]->cat_ID;
get_cat_name( $cat_id )

Para que nos devuelva el nombre de la categoría podemos usar la get_cat_name al cual le tenemos que pasar el id de categoría como parámetro.

single_cat_title( », false);

Con este podemos también conseguir el nombre de la categoría, single_cat_title( », false) no imprime el nombre de la categoría en pantalla simplemente la obtiene así pues puedes utilizar una variable para tenerla a mano $ncategoria por ejemplo

Category: wordpress
Something wrong? If you found an error or mistake in the content you can contact me on Twitter | @luisg2249_luis.
Last 4 post in same category