WordPress: Automatické vytváranie bočných panelov pre každú kategóriu

Funkcia registrácie bočných panelov pre každú kategóriu WordPress

Zjednodušoval som tento web, aby som zlepšil rýchlosť a pokúsil sa ho lepšie speňažiť bez toho, aby som dráždil svojich čitateľov. Existuje niekoľko spôsobov, ako som web speňažil ... sú tu od najviac po najmenej výnosné:

  • Priame sponzorstvá od partnerských spoločností. Pracujeme na kolektívnych stratégiách, ktoré zahŕňajú všetko od webinárov po zdieľanie na sociálnych sieťach, aby sme propagovali ich udalosti, produkty alebo služby.
  • Affiliate marketing z radu pridružených platforiem. Prehľadávam a identifikujem spoločnosti, zabezpečujem ich reputáciu a zdieľam konkrétne články, ktoré píšem, alebo reklamy, ktoré poskytujú.
  • Marketing zdrojov od partnera, ktorý uvoľňuje marketingové udalosti, prípadové štúdie a správy.
  • Bannerová reklama od spoločnosti Google, kde sú relevantné reklamy automaticky rozptýlené prostredníctvom mojej šablóny a obsahu.

Bočné panely WordPress

Keďže affiliate marketing poskytuje slušné výnosy, rozhodol som sa, že chcem zamerať pozornosť na veľmi konkrétnych inzerentov podľa kategórie webu, a tak som chcel dynamicky vytvoriť bočné panely bez nutnosti naprogramovať každý bočný panel na webe. Týmto spôsobom, ak pridám kategóriu - bočný panel sa automaticky zobrazí v mojej oblasti Widget a môžem pridať reklamu.

Aby som to mohol urobiť, potreboval som v functions.php súbor témy môjho dieťaťa. Našťastie som zistil, že niekto už napísal takmer všetko, čo som potreboval: Vytvorte widgetizované bočné panely pre každú kategóriu na WordPress. Chcel som len nejaké ďalšie ovládacie prvky, v ktorých kategóriách by som mohol chcieť zobraziť bočné panely.

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

Pomocou množstva argumentov na získanie kategórií môžem zahrnúť a vylúčiť všetky kategórie, na ktoré chcem zacieliť. Vo vyhlásení foreach môžem upraviť a priradiť rozloženie k môjmu celkovému formátovaniu bočného panela mojej webovej stránky WordPress.

Dodatočne v mojom functions.php, Chcem pridať funkciu, aby som zistil, či existuje bočný panel a či je k nemu pridaný widget:

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

Potom v rámci mojej témy sidebar súbor šablóny, pridám kód na dynamické zobrazenie oblasti, ak je bočný panel zaregistrovaný a má v sebe 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);
    }
}

Bočné panely WordPress pre každú kategóriu

Výsledok je presne to, čo som chcel:

Bočné panely widgetov WordPress pre každú kategóriu

Teraz, bez ohľadu na to, či pridávam, upravujem alebo odstraňujem kategórie ... moje oblasti bočného panela budú vždy aktuálne!

Čo si myslíte?

Táto stránka používa Akismet na zníženie spamu. Zistite, ako sa spracúvajú údaje vašich komentárov.