वर्डप्रेस: ​​प्रत्येक श्रेणी के लिए स्वचालित रूप से साइडबार बनाएं

प्रत्येक वर्डप्रेस श्रेणी के लिए रजिस्टर साइडबार रजिस्टर करने का कार्य

मैं इस साइट को गति समय में सुधार करने और अपने पाठकों को परेशान किए बिना साइट को बेहतर बनाने के प्रयास के लिए सरल बना रहा हूं। ऐसे कई तरीके हैं जिनसे मैंने साइट का मुद्रीकरण किया है ... यहाँ वे कम से कम आकर्षक हैं:

  • प्रत्यक्ष प्रायोजन भागीदार कंपनियों से। हम सामूहिक रणनीतियों पर काम करते हैं जो वेबिनार से लेकर सोशल मीडिया शेयरों तक सब कुछ उनकी घटनाओं, उत्पादों और / या सेवाओं को बढ़ावा देने के लिए शामिल करते हैं।
  • सहबद्ध विपणन सहबद्ध प्लेटफार्मों की एक सरणी से। मैं कंपनियों को परिमार्जित करता हूं और उनकी पहचान करता हूं, यह सुनिश्चित करता हूं कि वे सम्मानित हैं, और उन विशिष्ट लेखों को साझा करते हैं जिन्हें मैं लिखता हूं या वे विज्ञापन प्रदान करते हैं।
  • संसाधन विपणन एक साथी से जो जारी करता है विपणन से संबंधित कार्यक्रम, केस स्टडी, और श्वेत पत्र.
  • बैनर का विज्ञापन Google से जहां प्रासंगिक विज्ञापन स्वचालित रूप से मेरे टेम्पलेट और सामग्री के माध्यम से बिखरे हुए हैं।

वर्डप्रेस साइडबार

सहबद्ध विपणन कुछ सभ्य राजस्व प्रदान करने के साथ, मैंने फैसला किया कि मैं साइट की श्रेणी के आधार पर बहुत विशिष्ट विज्ञापनदाताओं को स्पॉटलाइट करना चाहता था, इसलिए मैं साइट पर प्रत्येक साइडबार को हार्ड-कोड किए बिना गतिशील रूप से साइडबार बनाना चाहता था। इस तरह, यदि मैं एक श्रेणी जोड़ता हूं - साइडबार स्वचालित रूप से मेरे विजेट क्षेत्र में दिखाई देता है और मैं एक विज्ञापन जोड़ सकता हूं।

ऐसा करने के लिए, मुझे कुछ विशिष्ट कोड की आवश्यकता है functions.php मेरे बच्चे की थीम की फाइल। शुक्र है, मैंने पाया कि किसी ने पहले से ही लगभग सब कुछ लिखा था जिसकी मुझे जरूरत थी: वर्डप्रेस में प्रत्येक श्रेणी के लिए विजेट साइडबार बनाएं। मैं बस कुछ अतिरिक्त नियंत्रण चाहता था कि मैं किन श्रेणियों में साइडबार प्रदर्शित कर सकता हूं।

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

श्रेणियों को पुनः प्राप्त करने के लिए तर्कों की सरणी के साथ, मैं उन सभी श्रेणियों को शामिल और शामिल कर सकता हूं जिन्हें मैं लक्षित करना चाहता हूं। फॉरचेट स्टेटमेंट के भीतर, मैं लेआउट को अपने समग्र वर्डप्रेस साइट के साइडबार फॉर्मेटिंग में संशोधित और मेल कर सकता हूं।

इसके अतिरिक्त, मेरे में 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);
    }
}

प्रत्येक श्रेणी के लिए वर्डप्रेस साइडबार

परिणाम वही है जो मैं चाहता था:

प्रत्येक श्रेणी के लिए वर्डप्रेस विजेट साइडबार

अब, चाहे मैं श्रेणियों को जोड़ूं, संपादित करूं या हटाऊं ... मेरे साइडबार क्षेत्र हमेशा अद्यतित रहेंगे!

तुम्हें क्या लगता है?

यह साइट स्पैम को कम करने के लिए अकिस्मेट का उपयोग करती है। जानें कि आपका डेटा कैसे संसाधित किया जाता है.