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.
<?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/
<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