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來減少垃圾郵件。 了解您的評論如何處理.