WordPress: crea barras laterais automaticamente para cada categoría

Función para rexistrar barras laterais para cada categoría de WordPress

Estiven simplificando este sitio para mellorar os tempos de velocidade e intentar monetizar mellor o sitio sen irritar aos meus lectores. Hai varias formas de monetizar o sitio ... aquí están de máis a menos lucrativas:

  • Patrocinios directos de empresas asociadas. Traballamos en estratexias colectivas que incorporan desde seminarios web ata recursos compartidos en redes sociais para promover os seus eventos, produtos e / ou servizos.
  • O mercadotecnia da filial dunha serie de plataformas afiliadas. Busco e identifica ás empresas, asegúrome de que son respetables e comparto artigos específicos que escribo ou anuncios que proporcionan.
  • Comercialización de recursos dun compañeiro que libera eventos relacionados co marketing, estudos de casos e libros brancos.
  • Banner publicitario de Google onde os anuncios relevantes se dispersan automaticamente a través do meu modelo e contido.

Barras laterais de WordPress

Co mercadotecnia por afiliación que proporcionaba uns ingresos decentes, decidín que quería destacar anunciantes moi específicos en función da categoría do sitio, polo que quería crear dinámicamente as barras laterais sen ter que codificar de xeito duro cada barra lateral do sitio. Deste xeito, se engado unha categoría, a barra lateral aparece automaticamente na miña área de widgets e podo engadir un anuncio.

Para facelo, necesitaba algún código específico no functions.php arquivo do tema meu fillo. Afortunadamente, descubrín que alguén xa escribira case todo o que necesitaba: Crea barras laterais widget para cada categoría en WordPress. Só quería algúns controis adicionais sobre as categorías nas que me gustaría amosar 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' );

Coa variedade de argumentos para recuperar categorías, podo incluír e excluír calquera categoría que desexe orientar. Dentro da declaración foreach, podo modificar e facer coincidir o deseño co formato da barra lateral do meu sitio WordPress global.

Ademais, no meu functions.php, Quero engadir unha función para ver se existe unha barra lateral e se lle engade un widget:

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;
}

Despois, dentro do meu tema barra lateral ficheiro de modelo, engado código para amosar a área de forma dinámica se a barra lateral está rexistrada e ten un widget.

$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 de WordPress para cada categoría

O resultado é exactamente o que eu quería:

Barras laterais de widgets de WordPress para cada categoría

Agora, independentemente de se engado, edito ou elimino categorías ... as miñas áreas da barra lateral estarán sempre actualizadas.

¿Que pensas?

Este sitio usa Akismet para reducir o spam. Aprende a procesar os teus datos de comentarios.