WordPress: crea barre laterali automaticamente per ogni categoria

Funzione per registrare le barre laterali per ogni categoria di WordPress

Ho semplificato questo sito per migliorare i tempi di velocità e tentare di monetizzare meglio il sito senza irritare i miei lettori. Ci sono diversi modi in cui ho monetizzato il sito ... eccoli dal più al meno redditizio:

  • Sponsorizzazioni dirette da aziende partner. Lavoriamo su strategie collettive che incorporano di tutto, dai webinar alle condivisioni sui social media per promuovere i loro eventi, prodotti e / o servizi.
  • Affiliate marketing da una serie di piattaforme di affiliazione. Setaccio e identifico le aziende, mi assicuro che siano affidabili e condivido articoli specifici che scrivo o annunci che forniscono.
  • Marketing delle risorse da un partner che rilascia eventi relativi al marketing, casi di studio e white paper.
  • Pubblicità banner da Google dove gli annunci pertinenti vengono automaticamente distribuiti attraverso il mio modello e contenuto.

Barre laterali di WordPress

Con il marketing di affiliazione che fornisce entrate decenti, ho deciso che volevo mettere in luce inserzionisti molto specifici in base alla categoria del sito, quindi volevo creare dinamicamente le barre laterali senza dover codificare ogni barra laterale sul sito. In questo modo, se aggiungo una categoria, la barra laterale appare automaticamente nella mia area Widget e posso aggiungere un annuncio.

Per fare questo, avevo bisogno di un codice specifico nel file functions.php file del mio child theme. Per fortuna, ho scoperto che qualcuno aveva già scritto quasi tutto ciò di cui avevo bisogno: Crea barre laterali con widget per ogni categoria in WordPress. Volevo solo alcuni controlli aggiuntivi su quali categorie potrei voler visualizzare le barre laterali.

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

Con la serie di argomenti per il recupero delle categorie, posso includere ed escludere tutte le categorie che desidero scegliere come target. All'interno dell'istruzione foreach, posso modificare e abbinare il layout alla formattazione della barra laterale del mio sito WordPress generale.

Inoltre, nel mio functions.php, Voglio aggiungere una funzione per vedere se esiste una barra laterale e ha un widget aggiunto ad essa:

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

Quindi, all'interno del mio tema sidebar template, aggiungo codice per visualizzare dinamicamente l'area se la barra laterale è registrata e contiene un widget.

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

Sidebar di WordPress per ogni categoria

Il risultato è esattamente quello che volevo:

Barre laterali dei widget di WordPress per ogni categoria

Ora, indipendentemente dal fatto che io aggiunga, modifichi o elimino categorie ... le mie aree della barra laterale saranno sempre aggiornate!

Cosa ne pensi?

Questo sito utilizza Akismet per ridurre lo spam. Scopri come vengono elaborati i dati dei tuoi commenti.