WordPress: Buat Sidebars Secara Automatik Untuk Setiap Kategori

Fungsi Mendaftarkan Sidebars untuk Setiap Kategori WordPress

Saya telah mempermudah laman web ini untuk meningkatkan masa kelajuan dan berusaha untuk mengewangkan laman web ini dengan lebih baik tanpa mengganggu pembaca saya. Terdapat banyak cara untuk mengewangkan laman web ini ... di sinilah mereka paling tidak menguntungkan:

  • Tajaan langsung dari syarikat rakan kongsi. Kami mengusahakan strategi kolektif yang menggabungkan segalanya dari webinar hingga perkongsian media sosial untuk mempromosikan acara, produk, dan / atau perkhidmatan mereka.
  • Pemasaran affiliate dari pelbagai platform gabungan. Saya menjelajah dan mengenal pasti syarikat, memastikan syarikatnya bereputasi baik, dan berkongsi artikel tertentu yang saya tulis atau iklan yang mereka sediakan.
  • Pemasaran sumber dari rakan yang melepaskan peristiwa yang berkaitan dengan pemasaran, kajian kes, dan kertas putih.
  • Iklan sepanduk dari Google di mana iklan yang relevan disebarkan secara automatik melalui templat dan kandungan saya.

Sidebars WordPress

Dengan pemasaran afiliasi yang memberikan hasil yang lumayan, saya memutuskan bahawa saya ingin menyoroti pengiklan yang sangat spesifik berdasarkan kategori laman web ini, jadi saya ingin membuat bar sisi secara dinamik tanpa perlu membuat kod keras setiap bar sisi di laman web ini. Dengan cara ini, jika saya menambahkan kategori - bar sisi muncul secara automatik di kawasan Widget saya dan saya dapat menambahkan iklan.

Untuk melakukan ini, saya memerlukan beberapa kod khusus di functions.php fail tema anak saya. Syukurlah, saya dapati seseorang telah menulis hampir semua yang saya perlukan: Buat Sidebars Widget untuk setiap Kategori di WordPress. Saya hanya mahukan beberapa kawalan tambahan untuk kategori mana yang mungkin saya mahu paparkan bar sisi.

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 pelbagai argumen untuk mendapatkan kategori, saya dapat memasukkan dan mengecualikan mana-mana kategori yang ingin saya sasarkan. Dalam pernyataan foreach, saya dapat mengubah dan memadankan susun atur dengan format bar sisi keseluruhan laman WordPress saya.

Selain itu, di saya functions.php, Saya ingin menambahkan fungsi untuk melihat apakah bar sisi ada dan mempunyai widget yang ditambahkan kepadanya:

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 bar sisi fail templat, saya menambah kod untuk memaparkan kawasan secara dinamis jika bar sisi didaftarkan dan mempunyai 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 adalah apa yang saya mahukan:

Sidebars Widget WordPress untuk Setiap Kategori

Sekarang, tidak kira sama ada saya menambah, mengedit, atau memadam kategori ... kawasan bar sisi saya akan sentiasa terkini!

Apa yang anda fikir?

Laman web ini menggunakan Akismet untuk mengurangkan spam. Ketahui bagaimana data komen anda diproses.