WordPress: Buat Sidebars Secara Otomatis Untuk Setiap Kategori

Berfungsi untuk Mendaftarkan Sidebars untuk Setiap Kategori WordPress

Saya telah menyederhanakan situs ini untuk meningkatkan waktu kecepatan dan mencoba memonetisasikan situs dengan lebih baik tanpa mengganggu pembaca saya. Ada beberapa cara saya memonetisasi situs ini… ini dia dari yang paling menguntungkan hingga yang paling tidak menguntungkan:

  • Sponsor langsung dari perusahaan mitra. Kami mengerjakan strategi kolektif yang menggabungkan segala hal mulai dari webinar hingga share media sosial untuk mempromosikan acara, produk, dan / atau layanan mereka.
  • Pemasaran afiliasi dari berbagai platform afiliasi. Saya menjelajahi dan mengidentifikasi perusahaan, memastikan mereka memiliki reputasi, dan membagikan artikel tertentu yang saya tulis atau iklan yang mereka sediakan.
  • Pemasaran sumber daya dari mitra yang melepaskan acara terkait pemasaran, studi kasus, dan buku putih.
  • Iklan banner dari Google di mana iklan yang relevan secara otomatis tersebar melalui template dan konten saya.

Sidebars WordPress

Dengan pemasaran afiliasi yang memberikan pendapatan yang layak, saya memutuskan bahwa saya ingin menyoroti pengiklan yang sangat spesifik berdasarkan kategori situs, jadi saya ingin membuat sidebar secara dinamis tanpa harus membuat kode keras setiap sidebar di situs. Dengan cara ini, jika saya menambahkan kategori - sidebar otomatis muncul di area Widget saya dan saya dapat menambahkan iklan.

Untuk melakukan ini, saya memerlukan beberapa kode khusus di functions.php file tema anak saya. Untungnya, saya menemukan bahwa seseorang telah menulis hampir semua yang saya butuhkan: Buat Sidebars Widget untuk Setiap Kategori di WordPress. Saya hanya ingin beberapa kontrol tambahan atas kategori mana saya ingin menampilkan sidebar.

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

Dengan deretan argumen untuk mengambil kategori, saya dapat menyertakan dan mengecualikan kategori apa pun yang ingin saya targetkan. Dalam pernyataan foreach, saya dapat memodifikasi dan mencocokkan tata letak dengan format sidebar situs WordPress saya secara keseluruhan.

Selain itu, di saya functions.php, Saya ingin menambahkan fungsi untuk melihat apakah ada sidebar dan memiliki widget yang ditambahkan ke dalamnya:

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

Kemudian, dalam tema saya sidebar file template, saya menambahkan kode untuk menampilkan area secara dinamis jika sidebar terdaftar dan memiliki widget di dalamnya.

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

Sidebars WordPress untuk Setiap Kategori

Hasilnya persis seperti yang saya inginkan:

Sidebars Widget WordPress untuk Setiap Kategori

Sekarang, terlepas dari apakah saya menambah, mengedit, atau menghapus kategori… area sidebar saya akan selalu diperbarui!

Bagaimana menurut Anda?

Situs ini menggunakan Akismet untuk mengurangi spam. Pelajari bagaimana data komentar Anda diproses.