Suporte » Temas » Acessar categoria pelo slug

  • Boa tarde!
    Estou criando um tema para uso pessoal e gostaria de fazer o seguinte:
    Nas páginas de categorias, mostrar um header com:
    a) o nome da categoria
    b) a descrição da categoria
    c) uma imagem relacionada à categoria.
    Meu problema está na imagem. Criei uma pasta com as imagens que eu quero mostrar para cada categoria e uma função no arquivo functions.php que deveria receber o slug da categoria sendo mostrada e retornar a imagem adequada.
    Acontece que eu não consegui encontrar nenhuma solução, nem no Codex, nem internet afora, sobre como “puxar” o slug da categoria para passar como parâmetro da minha função.
    Segue o código no functions.php:

    function get_cat_img($categ) {
    	
    	switch ($categ) {
    		case 'design': { 
    			$cat_img = bloginfo('template_url') . '/cat/design.png';
    			break;
    		}
    		case 'arte': { 
    			$cat_img = bloginfo('template_url') . '/cat/arte.png';
    			break;
    		}
    		case 'musica': { 
    			$cat_img = bloginfo('template_url') . '/cat/musica.png';
    			break;
    		}
    		default: {
    			$cat_img = bloginfo('template_url') . '/cat/semcat.png';
    			break;
    		}
    	}
    	return $cat_img;
    }

    E o código da chamada da função no category.php:

    <img src="<?php echo get_cat_img(get_the_category()); ?>" alt="<?php single_cat_title(); ?>" />

    Em todas as categorias ele está puxando a imagem “semcat.png”, que é a imagem default. Preciso do slug porque pra retornar as imagens pela ID faria a função ficar muito confusa e a manutenção seria horrível.
    Toda ajuda é bem-vinda, obrigada desde já!

Visualizando 1 resposta (de um total de 1)
  • Moderador Mário Valney

    (@mariovalney)

    WordPress Cleric of Fire

    Olá, tudo bem?

    Antes de falar como conseguir o slug da categoria, queria falar que o WordPress permite criar metadados para taxonomias também! Ou seja, você pode criar um metadado ‘category_image’ ou algo do tipo e fazer esse cadastro via dashboard.

    Aqui tem um artigo super interessante sobre isso:
    http://themehybrid.com/weblog/introduction-to-wordpress-term-meta

    Mas voltando à sua pergunta, você quer conseguir o slug do termo (da categoria) no Loop, certo?

    Se você olhar a documentação da função get_the_category vai perceber que o retorno é uma array de objetos WP_Term. Então é bem fácil pegar o slug da primeira categoria:

    $cat = get_the_category();
    if ( ! empty( $cat ) ) {
        $cat = $cat[0]->slug;
    }

    Caso tenha dúvidas sobre o objeto, é só ler a documentação da classe WP_Term.

    Abraços

    • Esta resposta foi modificada 6 anos, 10 meses atrás por Mário Valney.
Visualizando 1 resposta (de um total de 1)
  • O tópico ‘Acessar categoria pelo slug’ está fechado para novas respostas.