WordPress: Sidebars automatysk oanmeitsje foar elke kategory

Funksje om sydbalken te registrearjen foar elke WordPress-kategory

Ik haw dizze side ferienfâldige om snelheidstiden te ferbetterjen en te besykjen de side better te fertsjinjen sûnder myn lêzers te irritearjen. D'r binne meardere manieren wêrop ik de side monetariseare haw ... hjir binne se fan meast oant minste lukrative:

  • Direkte sponsoring fan partnerbedriuwen. Wy wurkje oan kollektive strategyen dy't alles opnimme fan webinars oant sosjale media-oandielen om har eveneminten, produkten en / as tsjinsten te befoarderjen.
  • Affiliate marketing fan in array fan affiliate platfoarms. Ik sykje en identifisearje de bedriuwen, soargje derfoar dat se renommearre binne, en diel spesifike artikels dy't ik skriuw as advertinsjes dy't se leverje.
  • Boarnemarketing fan in partner dy't frijlit marketing-relatearre barrens, case studies, en wite papieren.
  • Bannerreklame fan Google wêr't relevante advertinsjes automatysk ferspraat wurde troch myn sjabloan en ynhâld.

WordPress sydbalken

Mei affiliate marketing dy't wat fatsoenlike ynkomsten levere, besleat ik dat ik heul spesifike advertearders spotlightje woe op basis fan 'e kategory fan' e side, dat ik woe de sydbalken dynamysk oanmeitsje sûnder elke sydbalke op 'e side te hardcodearjen. Op dizze manier, as ik in kategory tafoegje - ferskynt de sydbalke automatysk yn myn Widget-gebiet en kin ik in advertinsje tafoegje.

Om dit te dwaan, haw ik wat spesifike koade nedich yn 'e functions.php bestân fan myn bernetema. Gelokkich fûn ik dat immen al hast alles skreau dat ik nedich wie: Meitsje widgetisearre sydbalken foar elke kategory yn WordPress, Ik woe gewoan wat ekstra kontrôles oer hokker kategoryen ik de sydbalken wol werjaan wolle.

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' );

Mei de array fan arguminten foar it opheljen fan kategoryen kin ik alle kategoryen opnimme en útslute dy't ik wolle rjochtsje. Binnen de ferklearring fan 'e foareach kin ik de opmaak oanpasse en oanpasse oan' e sydbalke-opmaak fan myn algemiene WordPress-side.

Derneist, yn myn functions.php, Ik wol in funksje tafoegje om te sjen as in sydbalke bestiet en in widget is tafoege:

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

Dan, binnen myn tema's sydbalke sjabloanbestân, ik foegje koade ta om it gebiet dynamysk wer te jaan as de sydbalke is registrearre en in widget hat.

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

WordPress sydbalken foar elke kategory

It resultaat is krekt wat ik woe:

WordPress Widget sydbalken foar elke kategory

No, ûnôfhinklik oft ik kategoryen tafoegje, bewurkje of wiskje ... myn sidebargebieten sille altyd op 'e hichte wêze!

Wat tinksto?

Dizze side brûkt Akismet om spam te ferleegjen. Learje hoe't jo kommentaargegevens ferwurke wurde.