WordPress: Seitenleisten automatisch für jede Kategorie erstellen

Funktion zum Registrieren von Seitenleisten für jede WordPress-Kategorie

Ich habe diese Website vereinfacht, um die Geschwindigkeitszeiten zu verbessern und zu versuchen, die Website besser zu monetarisieren, ohne meine Leser zu irritieren. Es gibt mehrere Möglichkeiten, wie ich die Website monetarisiert habe. Hier sind sie am wenigsten lukrativ:

  • Direkte Patenschaften von Partnerunternehmen. Wir arbeiten an kollektiven Strategien, die alles von Webinaren bis hin zu Social-Media-Freigaben umfassen, um für deren Veranstaltungen, Produkte und / oder Dienstleistungen zu werben.
  • Affiliate-Marketing von einer Reihe von Affiliate-Plattformen. Ich durchsuche und identifiziere die Unternehmen, stelle sicher, dass sie seriös sind, und teile bestimmte Artikel, die ich schreibe, oder Anzeigen, die sie bereitstellen.
  • Ressourcenmarketing von einem Partner, der freigibt Marketingbezogene Veranstaltungen, Fallstudien und White Papers.
  • Bannerwerbung von Google, wo relevante Anzeigen automatisch über meine Vorlage und meinen Inhalt verteilt werden.

WordPress-Seitenleisten

Da das Affiliate-Marketing einige anständige Einnahmen liefert, habe ich beschlossen, sehr spezifische Werbetreibende basierend auf der Kategorie der Website herauszustellen. Daher wollte ich die Seitenleisten dynamisch erstellen, ohne jede Seitenleiste auf der Website hart codieren zu müssen. Auf diese Weise wird beim Hinzufügen einer Kategorie die Seitenleiste automatisch in meinem Widget-Bereich angezeigt und ich kann eine Anzeige hinzufügen.

Dazu brauchte ich einen bestimmten Code in der functions.php Datei meines Kinderthemas. Zum Glück stellte ich fest, dass jemand bereits fast alles geschrieben hatte, was ich brauchte: Erstellen Sie Widget-Seitenleisten für jede Kategorie in WordPress. Ich wollte nur einige zusätzliche Steuerelemente für die Kategorien, in denen ich die Seitenleisten anzeigen möchte.

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

Mit dem Array von Argumenten zum Abrufen von Kategorien kann ich alle Kategorien einschließen und ausschließen, auf die ich abzielen möchte. Innerhalb der foreach-Anweisung kann ich das Layout ändern und an die Seitenleistenformatierung meiner gesamten WordPress-Site anpassen.

Zusätzlich in meinem functions.phpIch möchte eine Funktion hinzufügen, um festzustellen, ob eine Seitenleiste vorhanden ist und ein Widget hinzugefügt wurde:

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

Dann innerhalb meines Themas Seitenleiste Vorlagendatei füge ich Code hinzu, um den Bereich dynamisch anzuzeigen, wenn die Seitenleiste registriert ist und ein Widget enthält.

$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-Seitenleisten für jede Kategorie

Das Ergebnis ist genau das, was ich wollte:

WordPress Widget Sidebars für jede Kategorie

Unabhängig davon, ob ich Kategorien hinzufüge, bearbeite oder lösche, sind meine Seitenleistenbereiche immer auf dem neuesten Stand!

Was denken Sie?

Diese Seite verwendet Akismet, um Spam zu reduzieren. Erfahren Sie, wie Ihre Kommentardaten verarbeitet werden.