• Resolvido Paula Bonot

    (@p-bonot)


    Boa tarde pessoal, tenho um portal de noticias e cada categoria tem uma sidebar diferente (esporte, política, economia, etc) mas eu gostaria que os posts de cada categoria puxassem suas respectivas sidebars
    exemplo: categoria esporte >> todos os posts dessa categoria puxassem a sidebar esporte

    categoria políticas >> todos os posts dessa categoria puxassem a sidebar política

    … e assim por diante..

    alguém pode me ajudar?

    agradeço desde já!

Visualizando 13 respostas - 1 até 13 (de um total de 13)
  • Olá,

    Fiquei de escrever sobre isso no meu site mas estou sem tempo, publiquei no Stack:

    http://wordpress.stackexchange.com/questions/56114/how-to-generate-and-display-widgets-areas-dynamically

    Mesmo que tenha poucas categorias é mais fácil criar as áreas automatico em vez de um por um.

    Criador do tópico Paula Bonot

    (@p-bonot)

    Muito Obrigada Diana, funcionou perfeitamente…
    Outra coisa, tenho uma categoria Colunistas, onde cada colunista tem seu espaço para vender anuncios nas sidebars.. percebi que a sidebar de cada um pega a sidebar “colunistas”.. tem como gerar as sidebars das subcategorias de forma dinâmica também?

    Criador do tópico Paula Bonot

    (@p-bonot)

    Olá Diana, bem eu estava observando e acabei deixando escapar um detalhe.. tenho realmente muitas categorias e algumas não estam aparecendo, você sabe me dizer por quê? Tem algum limite?

    Criador do tópico Paula Bonot

    (@p-bonot)

    Existe alguma maneira de fazer isso manualmente ao invés de maneira dinâmica? se puder me dar alguma dica ficaria muito grata 😀

    Olá,

    Não sei se tem limite, ouço falar que não tem limites no WP, mas se criar manualmente seria só para algumas categorias? Então é só tirar a parte da obtenção de categorias, foreach etc e usar um array de slugs mesmo. (Use slugs da categoria para não ter problemas futuros com IDs).

    Se o problema está no painel de widgets, tente usar o modo de acessibilidade (em Opções de Tela).

    Em vez de criar widgets, também pode adicionar funções diretamente na área (barra lateral), dai não precisa criar widgets.

    Criador do tópico Paula Bonot

    (@p-bonot)

    Eu ativei o modo de acessibilidade, mas não era esse o problema e não consigo mais desativar, como faz?

    Eu não entendi bem o que você quiz dizer com array de slugs 🙁

    add_action( 'widgets_init', 'generate_widget_areas' );
    
    function generate_widget_areas() {
    
      $terms = get_categories('exclude=1'); //I don't want widgets for uncategorized, you can add any ID also
      foreach ($terms as $term) {
           register_sidebar( array(
          'name' => 'Category: '.$term->name,
            'id' => $term->slug.'-widget-area',
            'description' => 'Widget area for '.$term->name,
            'before_widget' => '<li id="%1$s" class="widget-container %2$s">',
            'after_widget' => '</li>',
            'before_title' => '<h3 class="titlebar">',
            'after_title' => '</h3>'    ) );
          }
    };

    De onde a onde eu ponho o array? de que forma?

    Desculpe minha ignorancia, é que ainda apanho um pouco pra isso!

    Criador do tópico Paula Bonot

    (@p-bonot)

    Com o foreach gera só 10 areas de widgets pra 10 categorias aleatórias, não sei porque :/

    Criador do tópico Paula Bonot

    (@p-bonot)

    Outra coisa, quando ativei o modo de acessibilidade as barras laterias aparecem e de acordo com as minhas contas, elas aparecem com o mesmo numero de categorias, exemplo: 20 categorias 20 barras laterias..

    Mas todas aparecem como inativas, não entendo bem como isso funciona :/

    Criador do tópico Paula Bonot

    (@p-bonot)

    Já consegui resolver meus problemas com o modo de acessibilidade.. só ainda não consegui realmente geral manualmente uma area de widget para cada categoria sem ser pelo Foerech :/ ainda não entendo como tem que mudar ali o código acima :/
    e também ele não está gerando automaticamente pelo foerech. Eu testei em outro loca, onde uso menos categorias e ele gera as que já existem mas não gera as que são criadas :/

    Você pode me ajudar??

    Olá,

    Revisei o código na resposta, estava com erros estranhos, agora vai funcionar ok!

    No functions.php:

    add_action( 'widgets_init', 'generate_widget_areas' );
    
    function generate_widget_areas() {
    
      $terms = get_categories('exclude=1&hide_empty=0'); //Nao gera area para Sem categoria
    
      foreach ($terms as $term) {
           register_sidebar( array(
            'name' => 'Categoria '.$term->name,
            'id' => $term->slug.'-widget-area',
            'description' => 'Widget para listagem e posts na categoria '.$term->name,
            'before_widget' => '<li id="%1$s" class="widget-container %2$s">',
            'after_widget' => '</li>',
            'before_title' => '<h3 class="widget-title">',
            'after_title' => '</h3>'    ) );
          }
    }

    E no sidebar.php:

    <?php if (is_category() ||is_archive()||is_single()) : ?>
        <div id="categories" class="widget-area" role="complementary">
        <ul class="xoxo">
          <?php
           $category = get_the_category();
           if (in_category($category[0]->slug) || is_category($category[0]->slug)){
                dynamic_sidebar( $category[0]->slug.'-widget-area' );
            };
           ?>
        </ul>
        </div><!-- #categories .widget-area -->
    <?php endif; ?>

    Desculpe a confusão!

    Criador do tópico Paula Bonot

    (@p-bonot)

    Opá.. Agoora siim.. Fechou… Muito Obrigada MESMOOO pela atenção…
    E olha só.. o código da sidebar não funcionou do jeito que voce mandou agora.. mas sim da maneira que estava antes

    <?php  if (is_category() ||is_archive()||is_single() ) { ?>
        <div id="categories" class="widget-area" role="complementary">
        <ul class="xoxo">
          <?php  $category = get_the_category(); if (in_category($category[0]->slug) || is_category($category[0]->slug) ) { ?>
            <?php if ( ! dynamic_sidebar( $category[0]->slug.'-widget-area' ) ) : ?>
            <?php endif;?>
          <?php } ?>
    	  <?php } ?>
    
        </div><!-- #categories .widget-area -->

    Mas agora está tudo certo 😀

    Olá,

    Tente usar o novo código porque tem uma chave errada neste antigo :S

    Criador do tópico Paula Bonot

    (@p-bonot)

    É que quando eu uso o novo código fica aparecendo umas mensagens de códigos na sidebar….

Visualizando 13 respostas - 1 até 13 (de um total de 13)
  • O tópico ‘Sidebars para cada categoria…’ está fechado para novas respostas.