WordPress: maak automatisch zijbalken voor elke categorie

Functie om zijbalken voor elke WordPress-categorie te registreren

Ik heb deze site vereenvoudigd om de snelheidstijden te verbeteren en om te proberen geld te verdienen met de site zonder mijn lezers te irriteren. Er zijn meerdere manieren waarop ik inkomsten heb gegenereerd met de site ... hier zijn ze van meest tot minst lucratief:

  • Directe sponsoring van partnerbedrijven. We werken aan collectieve strategieën die alles omvatten, van webinars tot gedeelde sociale media om hun evenementen, producten en / of diensten te promoten.
  • Affiliate marketing van een reeks aangesloten platforms. Ik doorzoek en identificeer de bedrijven, zorg ervoor dat ze een goede reputatie hebben en deel specifieke artikelen die ik schrijf of advertenties die ze aanbieden.
  • Middelenmarketing van een partner die marketinggerelateerde evenementen, casestudy's en white papers.
  • Banner reclame van Google waar relevante advertenties automatisch worden verspreid via mijn sjabloon en inhoud.

WordPress zijbalken

Omdat affiliate marketing behoorlijke inkomsten opleverde, besloot ik dat ik zeer specifieke adverteerders wilde onder de aandacht brengen op basis van de categorie van de site, dus ik wilde dynamisch de zijbalken maken zonder elke zijbalk op de site hard te coderen. Op deze manier, als ik een categorie toevoeg, verschijnt de zijbalk automatisch in mijn Widget-gebied en kan ik een advertentie toevoegen.

Om dit te doen, had ik een specifieke code nodig in het functions.php bestand van mijn child-thema. Gelukkig ontdekte ik dat iemand al bijna alles had geschreven wat ik nodig had: Maak Widget-Sidebars voor elke categorie in WordPress. Ik wilde gewoon wat extra bedieningselementen voor de categorieën waarin ik de zijbalken wil weergeven.

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 de reeks argumenten voor het ophalen van categorieën kan ik alle categorieën opnemen en uitsluiten die ik wil targeten. Binnen de foreach-verklaring kan ik de lay-out aanpassen en aanpassen aan de opmaak van de zijbalk van mijn algemene WordPress-site.

Bovendien, in mijn functions.php, Ik wil een functie toevoegen om te zien of er een zijbalk bestaat en er een widget aan is toegevoegd:

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 mijn thema's sidebar sjabloonbestand, voeg ik code toe om het gebied dynamisch weer te geven als de zijbalk is geregistreerd en er een widget in zit.

$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 zijbalken voor elke categorie

Het resultaat is precies wat ik wilde:

WordPress Widget Sidebars voor elke categorie

Nu, ongeacht of ik categorieën toevoeg, bewerk of verwijder ... mijn zijbalkgebieden zullen altijd up-to-date zijn!

Wat denk je?

Deze site gebruikt Akismet om spam te verminderen. Ontdek hoe uw reactiegegevens worden verwerkt.