WordPress: Automaticky vytvářejte postranní panely pro každou kategorii

Funkce pro registraci postranních panelů pro každou kategorii WordPress

Zjednodušoval jsem tento web, abych zlepšil rychlost a pokusil se jej lépe zpeněžit, aniž bych dráždil své čtenáře. Existuje několik způsobů, jak jsem web zpeněžit ... tady jsou od nejvíce po nejméně lukrativní:

  • Přímé sponzorství od partnerských společností. Pracujeme na kolektivních strategiích, které začleňují vše od webinářů po sdílení na sociálních médiích, abychom propagovali jejich akce, produkty nebo služby.
  • Affiliate marketing z řady přidružených platforem. Prohledávám a identifikuji společnosti, zajišťuji jejich reputaci a sdílím konkrétní články, které píšu, nebo reklamy, které poskytují.
  • Marketing zdrojů od partnera, který uvolní marketingové akce, případové studie a bílé knihy.
  • Bannerová reklama od Googlu, kde jsou relevantní reklamy automaticky rozptýleny prostřednictvím mé šablony a obsahu.

Postranní panely WordPress

S přidruženým marketingem, který poskytuje slušné příjmy, jsem se rozhodl, že chci zaměřit velmi konkrétní inzerenty na základě kategorie webu, takže jsem chtěl dynamicky vytvářet postranní panely, aniž bych musel každý boční panel na webu naprogramovat. Tímto způsobem, když přidám kategorii - postranní panel se automaticky zobrazí v mé oblasti Widget a mohu přidat reklamu.

K tomu jsem potřeboval nějaký specifický kód v functions.php soubor mého dětského tématu. Naštěstí jsem zjistil, že někdo již napsal téměř vše, co jsem potřeboval: Vytvořte Widgetized Sidebars for each category in WordPress. Chtěl jsem jen nějaké další ovládací prvky, ve kterých kategoriích si přeji zobrazit postranní 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' );

S řadou argumentů pro načítání kategorií mohu zahrnout a vyloučit všechny kategorie, na které bych chtěl cílit. V rámci příkazu foreach můžu upravit a přizpůsobit rozvržení mému celkovému formátování postranního panelu mého webu WordPress.

Navíc v mém functions.php, Chci přidat funkci, abych zjistil, zda existuje postranní panel a zda je k němu přidán 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;
}

Pak v rámci mého tématu sidebar soubor šablony, přidám kód pro dynamické zobrazení oblasti, pokud je registrován postranní panel a je v něm 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);
    }
}

Postranní panely WordPress pro každou kategorii

Výsledek je přesně to, co jsem chtěl:

Postranní panely widgetů WordPress pro každou kategorii

Nyní, bez ohledu na to, zda přidávám, upravuji nebo mazám kategorie ... moje oblasti postranního panelu budou vždy aktuální!

Co si myslíte?

Tyto stránky používají Akismet k omezení spamu. Zjistěte, jak jsou vaše údaje komentářů zpracovávány.