2011-07-18 7 views
6

पर कोड लागू करना क्या निम्न कोड को सीमित करने का कोई तरीका है जिसे मैंने अपने functions.php फ़ाइल में जोड़ा है ताकि यह केवल एक वर्डप्रेस श्रेणी पर लागू हो?वर्डप्रेस functions.php में कोड को केवल एक श्रेणी

<?php remove_filter('the_content', 'wpautop'); ?> 

मैं इस कोशिश की, लेकिन यह काम करने के लिए नहीं लगता था:

<?php if (in_category('work')) { remove_filter('the_content', 'wpautop'); } ?> 

मैं भी जोड़ना चाहिए विशिष्ट श्रेणी टेम्पलेट में सीधे कोड रखकर कि मैं इस समस्या का समाधान है, लेकिन मैं डी को मेरे फ़ंक्शन फ़ाइल में फ़िल्टर रखना पसंद करते हैं।

धन्यवाद!

+1

मुझे लगता है कि आपको इसे श्रेणी टेम्पलेट के बजाय single.php में जोड़ना होगा। सबसे अच्छा तरीका यह है कि इसे अपनी हेडर फ़ाइल में जोड़ना ताकि यह सभी पृष्ठों पर लागू हो। मुझे नहीं पता कि यह function.php – Tarun

+0

में क्यों काम नहीं करता है, जहां आप इसे ट्रिगर कर रहे हैं? init या पहले के बाद? – Tarun

उत्तर

0

आपके functions.php वर्तमान इंडेक्स और श्रेणी पृष्ठों जैसे वर्तमान अनुरोध से अवगत नहीं हैं।

$url = explode('?', 'http://'.$_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"]); 
$ID = url_to_postid($url[0]); 

एक बार जब आप यह है कि आपके पास आईडी: functions.php में इस कोड को काम करने के लिए, आप कच्चे सर्वर वार्स हड़पने और कहा कि वर्तमान यूआरएल के लिए प्रासंगिक है wp_query कार्यक्षमता को लोड करने के उन के माध्यम से पार्स करने के लिए होगा एक क्वेरी लूप कर सकते हैं और श्रेणी के आधार पर अपने फ़िल्टर को ट्रिगर कर सकते हैं।

1

मुझे विश्वास है कि आप pre_get_postsaction में हुक करना चाहते हैं। क्वेरी स्ट्रिंग को पार्स करने के बाद यह ठीक हो जाता है। कुछ लेकिन सभी सशर्त स्थापित नहीं हैं। आप जांच सकते हैं कि in_category() उनमें से एक है, लेकिन मुझे नहीं लगता कि यह महत्वपूर्ण है। क्यूं कर? खुशी है तुमने पूछा।

हुक आपको क्वेरी ऑब्जेक्ट पास करने जा रहा है, जिसमें संपत्ति category_name है। आपको बस इतना करना है कि क्या आपकी श्रेणी है और यदि आपका फ़िल्टर आग लगती है। कुछ ऐसा:

function ns_function_name($wpq){ 
    if($wpq->category_name == 'work'){ 
     remove_filter('the_content', 'wpautop'); 
    } 
} 
add_action('pre_get_posts', 'ns_function_name'); 

यह पूरी तरह से अनचाहे है। लेकिन चूंकि आप जानते हैं कि आप क्या कर रहे हैं, यह आपको सही रास्ते पर रखने के लिए पर्याप्त होना चाहिए।

+0

आपके कोड में एक बग है "नोटिस: अपरिभाषित संपत्ति: WP_Query :: $ category_name" –

+0

उत्तर ओपी पैटर्न का एक उदाहरण है जो अपने कार्य को पूरा करने के लिए उपयोग करना चाहिए। मैंने ध्यान दिया कि यह अनचाहे है, और स्पष्ट रूप से अन्य चेक पहले किया जाना चाहिए, जैसे is_set()। अपना कोड देखे बिना, मैं वास्तव में नहीं जानता कि आप सही या गलत क्या कर रहे हैं। यदि आपको इससे परेशानी हो रही है तो आप एक नया प्रश्न बनाने का प्रयास कर सकते हैं। साथ ही, WP दस्तावेज़ों के अनुसार, "pre_get_posts WP_Query सेटअप होने से पहले चलाता है"। – Shelton

संबंधित मुद्दे