WordPress: Skep sybalkies outomaties vir elke kategorie

Funksie om sybalke te registreer vir elke WordPress-kategorie
Leestyd: 2 minute

Ek het hierdie webwerf vereenvoudig om spoedtye te verbeter en om die webwerf beter te verdien, sonder om my lesers te irriteer. Daar is verskeie maniere waarop ek die webwerf kan verdien, hier is dit van die meeste tot die minste winsgewende:

  • Direkte borgskappe van vennootmaatskappye. Ons werk aan kollektiewe strategieë wat alles insluit, van webinars tot sosiale media-aandele om hul geleenthede, produkte en / of dienste te bevorder.
  • affiliate marketing vanaf 'n verskeidenheid geaffilieerde platforms. Ek soek en identifiseer die ondernemings, sorg dat hulle betroubaar is, en deel spesifieke artikels wat ek skryf of advertensies wat hulle verskaf.
  • Hulpbronbemarking van 'n maat wat vrylaat bemarkingsverwante gebeure, gevallestudies en witskrifte.
  • Banieradvertensies van Google waar relevante advertensies outomaties deur my sjabloon en inhoud versprei word.

WordPress-sybalkies

Aangesien filiaalbemarking behoorlike inkomste oplewer, besluit ek dat ek baie spesifieke adverteerders wil uitlig op grond van die kategorie van die werf, en daarom wil ek die sybalkies dinamies skep sonder om elke sybalk op die webwerf te hardkode. Op hierdie manier, as ek 'n kategorie byvoeg, verskyn die sybalk outomaties in my Widget-area en kan ek 'n advertensie byvoeg.

Om dit te doen, het ek 'n spesifieke kode in die Organisch lêer van my kind se tema. Gelukkig het ek gevind dat iemand al byna alles geskryf het wat ek nodig gehad het: Skep Widgetized Sidebars vir elke kategorie in WordPress. Ek wou net 'n paar bykomende kontroles hê in watter kategorieë ek die sidebars wil vertoon.

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

Met die verskeidenheid argumente om kategorieë op te spoor, kan ek kategorieë wat ek wil teiken insluit en uitsluit. In die verklaring van die voorblad kan ek die uitleg verander en ooreenstem met die sybalkopmaak van my algehele WordPress-werf.

Verder, in my Organisch, Ek wil 'n funksie byvoeg om te sien of 'n sidebar bestaan ​​en 'n widget daarby gevoeg word:

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 binne my temas sidebar sjabloonlêer, voeg ek kode by om die area dinamies te vertoon as die sybalk geregistreer is en 'n widget bevat.

$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 Sidebars vir elke kategorie

Die resultaat is presies wat ek wou hê:

WordPress Widget Sidebars vir elke kategorie

Nou, ongeag of ek kategorieë byvoeg, wysig of skrap ... my sybalkareas sal altyd op datum wees!

Wat dink jy?

Hierdie webwerf gebruik Akismet om spam te verminder. Leer hoe jou opmerking verwerk is.