Áreas de widgets para cada categoria

Arquivos: functions.php

Funções: dynamic_sidebar in_category

Como prometido na postagem anterior, veja como mostrar áreas de widgets para cada categoria ou condicionalmente.

Você viu como adicionar mais áreas de widgets a um tema, se a ideia é ter uma área de widget para cada categoria por exemplo, é óbvio que terá que criar uma área para cada uma, como fiz neste site. Isso pode ser útil se bem pensando, ou um saco e perda de tempo/performance se mal aplicado, tudo depende de como seu site é mantido, quantas categorias tem etc, então, dedique um pouco de tempo no seguinte (se o seu site tem mais de 20 categorias, senão, pode pular para a seção seguinte ;)):

  • Quantas categorias terão widgets exclusivos?
  • Quantas das categorias com widgets exclusivos precisam de gerenciamento periódico (mudar/editar conteúdo de widgets etc)?
  • Preciso de uma área de widget para cada categoria, exclusivamento?
  • Duas categorias podem mostrar a mesma área de widget?

Depois deste estudo, enumere quantas áreas de widgets precisará e já crie os nomes para cada área. Faça o possível para que categorias compartilhem a mesma área e assim economize tempo e código.

Os Condicionais

Usando este site como exemplo, tenho uma barra lateral com widgets exclusivos para cada categoria no arquivo sidebar.php, ou seja, use o arquivo de contexto do tema, consulte a documentação Hierarquia de Modelos para saber o que usar com o quê.

Uma vez que todas as áreas estão devidamente registradas, como explicado na postagem anterior, resta apenas criar uma cadeia de condicionais verificando qual a categoria da postagem com in_category. Se também quer usar a área na lista de postagens na categoria, use também is_category, como na linha 10:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
      <?php  if (in_category('codigos') ) { ?> 
      <?php dynamic_sidebar( 'codigos' ); ?>
 
      <?php } elseif (in_category ('plugins')) { ?>
      <?php dynamic_sidebar( 'plugins' ); ?>
 
      <?php } elseif (in_category ('traduz')) { ?>
      <?php dynamic_sidebar( 'traduz' ); ?>
 
      <?php } elseif (in_category ('dev')|is_category('log')) { ?>
      <?php dynamic_sidebar( 'dev' ); ?>
 
      <?php } else  { ?>
      <?php dynamic_sidebar( 'geral' ); ?>
      <?php } ?>

Há uma modo mais compacto de se escrever isso, mas deste modo fica mais fácil de adicionar outras funções/tags html dentro da verificação, por exemplo, mostrar um link, imagem etc. O modo mais compacto precisará que “ecoe” elementos adicionais.

Outras dicas

Considerando alguém com um site gigantesco, que mesmo após reduzir ao máximo as áreas de widgets a serem criadas, ficou com muitas categorias (e suas áreas de widgets), talvez seja melhor criar um arquivo com o grande condicional e chamá-lo na área desejada ( sidebar.php etc) com get_template_part, assim seu arquivo de tema não fica muito cheio.

A postagem sobre chamar/incluir arquivos no WordPress explica como fazer isso.

Áreas de widgets para cada categoria é um artigo sobre categorias, widgets
  • Como mostrar áreas de widgets para cada categoria
  • Como mostrar áreas de widgets condicionalmente
categorias, widgets Sem categoria http://dianakcury.com/sem-categoria-pt/areas-de-widgets-para-cada-categoria#commentsDiana K. Cury http://dianakcury.com/wordpress/wp-content/themes/di3554/img/card.png

2 ideias sobre “Áreas de widgets para cada categoria

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *