WordPress: Awtomatikong Lumikha ng Mga Sidebars Para sa Bawat kategorya

Pag-andar upang Magrehistro ng mga Sidebars para sa bawat Kategoryang WordPress

Pinasimple ko ang site na ito upang mapagbuti ang mga oras ng bilis at upang subukang gawing mas mahusay ang site nang hindi inisin ang aking mga mambabasa. Mayroong maraming mga paraan na kinita ko ang site ... narito ang mga ito mula sa karamihan hanggang sa hindi gaanong kapaki-pakinabang:

  • Direktang mga sponsorship mula sa mga kasosyo na kumpanya. Gumagawa kami sa mga sama-samang diskarte na isinasama ang lahat mula sa mga webinar hanggang sa pagbabahagi ng social media upang itaguyod ang kanilang mga kaganapan, produkto, at / o mga serbisyo.
  • Affiliate marketing mula sa isang hanay ng mga kaakibat na platform. Sinusuri at kinikilala ko ang mga kumpanya, tinitiyak na kagalang-galang sila, at nagbabahagi ng mga tukoy na artikulong isinulat ko o mga ad na ibinibigay nila.
  • Resource marketing mula sa isang kasosyo na naglalabas mga kaganapan na nauugnay sa marketing, mga case study, at puting papel.
  • Advertising sa banner mula sa Google kung saan ang mga nauugnay na ad ay awtomatikong nakakalat sa pamamagitan ng aking template at nilalaman.

Mga Sidebars ng WordPress

Sa pamamagitan ng kaakibat na pagmemerkado na nagbibigay ng ilang disenteng kita, napagpasyahan kong nais kong bigyang pansin ang mga tiyak na partikular na mga advertiser batay sa kategorya ng site, kaya't nais kong likhain ang mga sidebar nang hindi kinakailangang i-hard-code ang bawat sidebar sa site. Sa ganitong paraan, kung magdagdag ako ng isang kategorya - awtomatikong lilitaw ang sidebar sa aking Widget area at maaari akong magdagdag ng isang ad.

Upang magawa ito, kailangan ko ng ilang tukoy na code sa functions.php file ng tema ng aking anak. Sa kabutihang palad, nalaman kong may nakasulat na ng halos lahat ng kailangan ko: Lumikha ng Mga Widgetized Sidebars para sa Bawat kategorya sa WordPress. Nais ko lamang ang ilang mga karagdagang kontrol sa kung aling mga kategorya ang maaaring gusto kong ipakita sa mga sidebars.

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

Sa hanay ng mga argumento para sa pagkuha ng mga kategorya, maaari kong isama at ibukod ang anumang mga kategorya na nais kong i-target. Sa loob ng pahayag ng unahan, maaari kong baguhin at itugma ang layout sa pag-format sa sidebar ng aking pangkalahatang site.

Bukod pa rito, sa aking functions.php, Nais kong magdagdag ng isang pagpapaandar upang makita kung may isang sidebar at may idinagdag na widget dito:

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

Pagkatapos, sa loob ng aking tema sidebar template file, nagdagdag ako ng code upang maipakita nang maigi ang lugar kung nakarehistro ang sidebar at mayroong isang widget dito.

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

Mga WordPress Sidebars para sa bawat Kategoryang

Ang resulta ay eksaktong gusto ko:

Mga Widget ng Widget ng WordPress para sa bawat Kategoryang

Ngayon, hindi alintana kung magdagdag, mag-edit, o magtanggal ng mga kategorya… palaging napapanahon ang aking mga lugar sa sidebar!

Ano sa tingin ninyo?

Ang site na ito ay gumagamit ng Akismet upang mabawasan ang spam. Alamin kung paano naproseso ang data ng iyong komento.