WordPress: Creați bare laterale automat pentru fiecare categorie

Funcția de a înregistra bare laterale pentru fiecare categorie WordPress

Am simplificat acest site pentru a îmbunătăți timpul de viteză și pentru a încerca să monetizez site-ul mai bine fără a-mi irita cititorii. Există mai multe moduri în care am monetizat site-ul ... aici sunt de la cel mai puțin profitabil:

  • Sponsorizări directe de la companii partenere. Lucrăm la strategii colective care încorporează totul, de la webinarii la partajări de pe rețelele sociale pentru a-și promova evenimentele, produsele și / sau serviciile.
  • Afiliere marketing dintr-o serie de platforme afiliate. Parcurg și identific companiile, mă asigur că sunt de încredere și împărtășesc anumite articole pe care le scriu sau reclame pe care le furnizează.
  • Marketingul resurselor de la un partener care eliberează evenimente legate de marketing, studii de caz și cărți albe.
  • Publicitate banner de la Google unde anunțurile relevante sunt dispersate automat prin șablonul și conținutul meu.

Barele laterale WordPress

Având în vedere că marketingul afiliat furnizează niște venituri decente, am decis că doresc să pun accent pe agenții de publicitate foarte specifici în funcție de categoria site-ului, așa că am vrut să creez dinamic barele laterale fără a fi nevoie să codez fiecare bară laterală de pe site. În acest fel, dacă adaug o categorie - bara laterală apare automat în zona mea Widget și pot adăuga o reclamă.

Pentru a face acest lucru, aveam nevoie de un anumit cod în functions.php fișierul temei copilului meu. Din fericire, am constatat că cineva scrisese deja aproape tot ce aveam nevoie: Creați bare laterale widgetizate pentru fiecare categorie din WordPress. Am vrut doar câteva controale suplimentare asupra categoriilor în care aș dori să afișez barele laterale.

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

Cu gama de argumente pentru regăsirea categoriilor, pot include și exclude orice categorie pe care doresc să o vizez. În cadrul declarației foreach, pot modifica și potrivi aspectul cu formatarea generală a barei laterale a site-ului meu WordPress.

În plus, în functions.php, Vreau să adaug o funcție pentru a vedea dacă există o bară laterală și are un widget adăugat la ea:

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

Apoi, în tematica mea bara laterală fișier șablon, adaug cod pentru a afișa dinamic zona dacă bara laterală este înregistrată și are un widget în ea.

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

Barele laterale WordPress pentru fiecare categorie

Rezultatul este exact ceea ce am vrut:

WordPress Widget Sidebars pentru fiecare categorie

Acum, indiferent dacă adaug, editez sau șterg categorii ... zonele mele din bara laterală vor fi întotdeauna actualizate!

Ce părere ai?

Acest site folosește Akismet pentru a reduce spamul. Aflați cum sunt procesate datele despre comentarii.