WordPress: crie barras laterais automaticamente para cada categoria

Função para registrar barras laterais para cada categoria do WordPress

Eu simplifiquei este site para melhorar os tempos de velocidade e tentar rentabilizar melhor o site sem irritar meus leitores. Há várias maneiras de monetizar o site ... aqui, elas são da mais para a menos lucrativa:

  • Patrocínios diretos de empresas parceiras. Trabalhamos em estratégias coletivas que incorporam tudo, desde webinars a compartilhamentos de mídia social para promover seus eventos, produtos e / ou serviços.
  • O marketing da filial de uma série de plataformas afiliadas. Eu vasculho e identifico as empresas, asseguro que elas são confiáveis ​​e compartilho artigos específicos que escrevo ou anúncios que elas fornecem.
  • Marketing de recursos de um parceiro que libera eventos, estudos de caso e white papers relacionados a marketing.
  • Banner publicitário do Google, onde os anúncios relevantes são automaticamente dispersos por meio de meu modelo e conteúdo.

WordPress Sidebars

Com o marketing de afiliados proporcionando uma receita decente, decidi que queria destacar anunciantes muito específicos com base na categoria do site, por isso queria criar dinamicamente as barras laterais sem ter que codificar cada barra lateral no site. Dessa forma, se eu adicionar uma categoria - a barra lateral aparece automaticamente na minha área de widget e posso adicionar um anúncio.

Para fazer isso, eu precisava de algum código específico no functions.php arquivo do meu tema infantil. Felizmente, descobri que alguém já havia escrito quase tudo que eu precisava: Crie barras laterais widgetizadas para cada categoria no WordPress. Eu só queria alguns controles adicionais sobre as categorias em que posso exibir as barras laterais.

function add_category_sidebars() {
    $args = array(
        'type'                     => 'post',
        'orderby'                  => 'name',
        'order'                    => 'ASC',
        'hide_empty'               => 1,
        'hierarchical'             => 1,
        'exclude'                  => '',
        'include'                  => '',
        'number'                   => '',
        'taxonomy'                 => 'category'
        ); 
    
    $categories = get_categories($args);

    foreach ($categories as $category) {
        if (0 == $category->parent)
            register_sidebar( array(
                'name' => $category->cat_name,
                'id' => $category->category_nicename . '-sidebar',
                'description' => 'This is the ' . $category->cat_name . ' widgetized area',
                'before_widget' => '<aside id="%1$s" class="widget %2$s">',
                'after_widget' => '</aside>',
                'before_title' => '<h3 class="widget-title">',
                'after_title' => '</h3>',
            ));
        }
}
add_action( 'widgets_init', 'add_category_sidebars' );

Com o conjunto de argumentos para recuperar categorias, posso incluir e excluir quaisquer categorias que desejo segmentar. Na instrução foreach, posso modificar e combinar o layout com a formatação geral da barra lateral do meu site WordPress.

Além disso, em meu functions.php, Quero adicionar uma função para ver se existe uma barra lateral e um widget adicionado a ela:

function is_sidebar_active($cat_name) {
    global $wp_registered_sidebars;
    $cat_id = get_cat_ID($cat_name);
    $widgetlist = wp_get_sidebars_widgets();
    if ($widgetlist[$cat_id])
        return true;
    return false;
}

Então, dentro do meu tema barra lateral arquivo de modelo, adiciono código para exibir dinamicamente a área se a barra lateral estiver registrada e tiver um widget nela.

$queried_object = get_queried_object();
if ($queried_object) {
    $post_id = $queried_object->ID;
}
if(is_category() || in_category($cat_name, $post_id)) {
    $sidebar_id = sanitize_title($cat_name);
    if( is_sidebar_active($sidebar_id)) {
        dynamic_sidebar($sidebar_id);
    }
}

Barras laterais do WordPress para cada categoria

O resultado é exatamente o que eu queria:

Barras laterais do widget WordPress para cada categoria

Agora, independentemente de eu adicionar, editar ou excluir categorias ... minhas áreas da barra lateral estarão sempre atualizadas!

O que você acha?

Este site usa o Akismet para reduzir o spam. Saiba como seus dados de comentário são processados.