WordPress: Аўтаматычна стварайце бакавыя панэлі для кожнай катэгорыі

Функцыя рэгістрацыі бакавых панэляў для кожнай катэгорыі WordPress

Я спрашчаю гэты сайт, каб палепшыць хуткасць і паспрабаваць манетызаваць сайт, не раздражняючы чытачоў. Ёсць некалькі спосабаў манетызацыі сайта ... вось яны ад самых да менш прыбытковых:

  • Прамое спонсарства ад кампаній-партнёраў. Мы працуем над калектыўнымі стратэгіямі, якія ўключаюць у сябе ўсё: ад вэб-семінараў да акцый у сацыяльных сетках, каб прасоўваць свае падзеі, прадукты і / або паслугі.
  • Партнёрскі маркетынг з мноства партнёрскіх платформаў. Я праглядаю і ідэнтыфікую кампаніі, гарантую, што яны карыстаюцца аўтарытэтам, і дзялюся канкрэтнымі артыкуламі, якія я пішу, альбо аб'явамі, якія яны прадастаўляюць.
  • Рэсурсны маркетынг ад партнёра, які вызваляе звязаныя з маркетынгам падзеі, тэматычныя даследаванні і даведкі.
  • Банерная рэклама ад Google, дзе адпаведныя аб'явы аўтаматычна распаўсюджваюцца па маім шаблоне і змесце.

Бакавыя панэлі WordPress

З афіліраваным маркетынгам, які забяспечвае прыстойны прыбытак, я вырашыў, што хачу звярнуць увагу на канкрэтных рэкламадаўцаў на аснове катэгорыі сайта, таму я хацеў дынамічна ствараць бакавыя панэлі без неабходнасці жорсткага праграмавання кожнай бакавой панэлі сайта. Такім чынам, калі я дадам катэгорыю, бакавая панэль аўтаматычна з'явіцца ў маім віджэце і я магу дадаць рэкламу.

Для гэтага мне спатрэбіўся пэўны код у functions.php файл маёй дзіцячай тэмы. На шчасце, я выявіў, што хтосьці ўжо напісаў амаль усё, што мне трэба: Стварыце віджэтныя бакавыя панэлі для кожнай катэгорыі ў WordPress. Я проста хацеў правесці дадатковы кантроль над тым, у якіх катэгорыях я магу адлюстраваць бакавыя панэлі.

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

З масівам аргументаў для атрымання катэгорый я магу ўключаць і выключаць любыя катэгорыі, на якія я хачу арыентавацца. У заяве foreach я магу змяніць макет і супаставіць яго з фарматаваннем бакавой панэлі майго агульнага сайта WordPress.

Дадаткова, у маім functions.php, Я хачу дадаць функцыю, каб даведацца, ці існуе бакавая панэль і да яе дададзены віджэт:

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

Потым, у межах маёй тэмы бакавая панэль файл шаблону, я дадаю код для дынамічнага адлюстравання вобласці, калі бакавая панэль зарэгістравана і ў ёй ёсць віджэт.

$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 для кожнай катэгорыі

Вынік - менавіта тое, што я хацеў:

Бакавыя панэлі віджэтаў WordPress для кожнай катэгорыі

Цяпер, незалежна ад таго, дадаю, рэдагую ці выдаляю катэгорыі ... мае бакавыя панэлі заўсёды будуць у курсе!

Што вы думаеце?

Гэты сайт выкарыстоўвае Akismet для барацьбы са спамам. Даведайцеся, як дадзеныя апрацоўваюцца каментар.