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 Widget Sidebars สำหรับแต่ละหมวดหมู่

ตอนนี้ไม่ว่าฉันจะเพิ่มแก้ไขหรือลบหมวดหมู่ ... พื้นที่แถบด้านข้างของฉันจะอัปเดตอยู่เสมอ!

คุณคิดอย่างไร?

ไซต์นี้ใช้ Akismet เพื่อลดสแปม เรียนรู้วิธีการประมวลผลข้อมูลความคิดเห็นของคุณ.