प्रश्न और उत्तर रिपोर्ट
कभी-कभी ये सवाल होते हैं जो आपको परेशान करते हैं और जीवन में बाद में फिर से आपका शिकार करते हैं, और यह एक ऐसा सवाल है।
इस सवाल ने मुझे समस्या के वैकल्पिक समाधान के बारे में सोचा था। जैसा कि मैंने पहले ही कहा था, कस्टम फ़ील्ड और मेटा बॉक्स मेटा डेटा के छोटे टुकड़ों को संग्रहीत करने के लिए हैं, और सामग्री पोस्ट करने के लिए एक एक्सटेंशन के रूप में कार्य करने के लिए नहीं जहां आप शोर्ट और फ़ंक्शन निष्पादित कर सकते हैं। इसके अलावा, जैसा कि मैंने पहले ही कहा था, आपका तरीका गलत है और इसका इस्तेमाल नहीं किया जाना चाहिए
मैंने आपके पोस्ट में जो दिलचस्प पाया वह यह है कि आपने अनजाने में उपयोगकर्ता इनपुट से कस्टम सामग्री प्रदर्शित करने के लिए कस्टम फ़ील्ड और मेटा बॉक्स का उपयोग किया। इसलिए मैं बैठ गया और इस काम को करने के लिए एक संभावित तरीका सोचा और कस्टम फ़ील्ड डेटा और मेटा बॉक्स डेटा का सही तरीके से उपयोग किया
यह मेरा विचार है:
परिदृश्य:
नोट: यह किसी भी जरूरत के अनुरूप संशोधित किया जा सकता है
किसी एकल पोस्ट पर, उपयोगकर्ता अपनी आवश्यकताओं के अनुरूप पोस्ट के बाद गतिशील रूप से कस्टम सामग्री दिखाना चाहता / चाहता है। यह गतिशील होना चाहिए। सामग्री एक कस्टम क्वेरी होनी चाहिए, और उपयोगकर्ता को यह चुनने की आवश्यकता है कि जब भी वह दिखाना चाहता है और वह क्या चाहता है
पोसलेबल समाधान:
शॉर्टकोड यहाँ काम नहीं करेंगे, क्योंकि शॉर्टकोड को कस्टम फ़ील्ड में निष्पादित नहीं किया जा सकता है। न तो do_shortcode
काम करेगा , क्योंकि यह गतिशील नहीं है और हार्डकोड है, जो हम नहीं चाहते हैं। आपके प्रश्न के अनुसार, हम एक कस्टम फ़ील्ड का उपयोग करने जा रहे हैं। फिर से मैं तनाव, कस्टम क्षेत्र का उपयोग करने के लिए एक कस्टम क्वेरी या शॉर्टकोड निष्पादित करने के लिए नहीं
योजना:
हम कस्टम फ़ील्ड का उपयोग केवल अपने क्वेरी तर्कों को बचाने के लिए करेंगे, बस इतना ही। तो, हम क्या करते हैं, हम एक कस्टम फ़ील्ड बनाते हैं जिसे कहा जाता है custom_query_arguments
। आपकी पोस्ट एडिटर स्क्रीन में, अब आपको अपना कस्टम फ़ील्ड दिखाई देगा, जो उपयोग के लिए तैयार है
अगला कदम हमारे क्षेत्र में हमारे कस्टम क्वेरी तर्क जोड़ना होगा। कहते हैं, हमें श्रेणी 1 से 3 पदों को शीर्षक से क्रमबद्ध दिखाना होगा। तो हमारे क्वेरी तर्क इस तरह दिखना चाहिए: ( स्ट्रिंग प्रारूप में )
'posts_per_page=3&cat=1&orderby=title'
यह वही है जो अब आपको अपने कस्टम फ़ील्ड में दर्ज करना चाहिए। एक बार दर्ज होने के बाद, अपने कस्टम फ़ील्ड का मान सहेजें
अगला आपके single.php में कस्टम क्वेरी का निर्माण करना होगा। यहाँ क्या आवश्यक है, हमें अपने कस्टम क्षेत्र से मूल्य प्राप्त करने की आवश्यकता है, जो वास्तव में हमारे क्वेरी तर्क हैं, और WP_Query
पोस्ट को पुनः प्राप्त करने के लिए एक नए उदाहरण के लिए फ़ीड करते हैं। हमें यह भी जांचने की आवश्यकता है कि क्या वास्तव में हमारे पास उस कस्टम फ़ील्ड में सहेजा गया मान है या नहीं, यदि कस्टम फ़ील्ड खाली है, तो कुछ भी न दिखाएं
कोड:
आप सिंगल पोस्ट के बाद सिंगल.फ्प में कुछ इस तरह की कोशिश कर सकते हैं।
$args = get_post_meta( get_queried_object_id(), 'custom_query_arguments', true );
// check if the custom field has a value
if( ! empty( $args ) ) {
$q = new WP_Query( $args );
if( $q->have_posts() ) {
while( $q->have_posts() ) {
$q->the_post();
the_title();
}
wp_reset_postdata();
}
}
यदि उपयोगकर्ता कस्टम क्वेरी को निकालना चाहता है, तो वह बस कस्टम फ़ील्ड के मूल्य को हटा सकता है और कस्टम फ़ील्ड को खाली छोड़ सकता है। यदि उसे एक ही क्वेरी दिखाने की आवश्यकता है लेकिन श्रेणी 10 और कुल 5 पदों से, वह मूल मूल्य को निम्नलिखित के साथ बदल सकता है
'posts_per_page=5&cat=10&orderby=title'
FEW नोट:
इस कस्टम फ़ील्ड और मेटा बॉक्स में जानकारी दर्ज करते समय सही सिंटैक्स और प्रारूप का उपयोग करना महत्वपूर्ण है। सिंटैक्स त्रुटियां या गलत जानकारी अवांछित आउटपुट या यहां तक कि घातक त्रुटियों को जन्म देगी। अपने ग्राहकों को ऐसी जानकारी से अवगत कराना महत्वपूर्ण है
मूल ANSWER
मुझे समझ नहीं आ रहा है कि आप क्या हासिल करने की कोशिश कर रहे हैं, लेकिन जो मैं आपको बता सकता हूं, वे दो अलग चीजें हैं
विकल्प 1
apply_filters('the_content', $content);
का उपयोग सामग्री अनफ़िल्टर्ड पोस्ट सामग्री के लिए फ़िल्टर को लागू करने के लिए किया जाता है, जो आमतौर पर के उपयोग से आता है $post->post_content
। इन फ़िल्टर में प्रसिद्ध फ़िल्टर wp_autop
शामिल हैं जो p टैग को जोड़ता हैthe_content()
apply_filters('the_content', $content);
उपयोग करने के लिए प्रयोग किया जाता है, get_posts
जहां कोई भी WP_Post
वस्तुओं के साथ सीधे काम करता है, setup_postdata( $post )
जिसके उपयोग के लिए टेम्पलेट टैग की तरह the_content()
उपलब्ध है
विकल्प 2
do_shortcode
पृष्ठ संपादक स्क्रीन बैक एंड में टेक्स्ट एडिटर के बाहर टेम्प्लेट फ़ाइलों में कहीं भी शोर्ट जोड़ने के लिए उपयोग किया जाता है, मूल रूप से अपने हुक के माध्यम से शॉर्टकोड को फ़िल्टर करना।
सही उपयोग निम्नानुसार है
उदाहरण: टेम्प्लेट फ़ाइल में गैलरी शोर्ट जोड़ना
echo do_shortcode( '[gallery]' )
EDIT 1
आपकी टिप्पणियों से, मैं तब एक शोर्ट का उपयोग नहीं करूंगा।
यदि आप टेक्स्ट एडिटर के माध्यम से शोर्ट नहीं जोड़ने जा रहे हैं और इसे सीधे (हार्डकोड) do_shortcode
एक टेम्प्लेट फ़ाइल के माध्यम से जोड़ने जा रहे हैं , तो मैं चाहूंगा कि केवल फंक्शन को टेम्प्लेट में जोड़ें
उदाहरण:
यदि आपके पास निम्नलिखित शोर्ट फ़ंक्शन है
function footag_func( $atts ) {
return "foo = {$atts['foo']}";
}
add_shortcode( 'footag', 'footag_func' );
आप फ़ंक्शन को सीधे टेम्पलेट जैसे सीधे कॉल कर सकते हैं
echo footag_func();
यह इस तरह से बहुत तेज़ है क्योंकि शोर्ट को पार्स करने की आवश्यकता नहीं है
EDIT 2
यहां ईमानदार होने के लिए, आप अपने संपादन से पूरी तरह से गलत कर रहे हैं। इसीलिए मैं आपके शुरुआती सवाल को समझ नहीं पाया
कभी-कभी, मुझे पोस्ट / पेज / कस्टम पोस्ट प्रकारों पर पोस्ट मेटा जोड़ने की आवश्यकता होती है, ताकि वे शॉर्टकोड (स्लाइडर, संपर्क फ़ॉर्म आदि) या बस एक साधारण पाठ जोड़ सकें। यह एक पाठ दायर किया गया है।
शोर्ट काम करने के लिए, मैं विकल्प 1 का उपयोग करता हूँ .....
कस्टम फ़ील्ड हैं नहीं पाठ फ़ील्ड और निश्चित रूप से शॉर्टकोड निष्पादित और उस बात स्लाइडर या संपर्क फ़ॉर्म के लिए इस्तेमाल किया जा करने के लिए नहीं कर रहे हैं। कस्टम फ़ील्ड को कभी भी पोस्ट और पेज में टेक्स्ट एडिटर को बदलने के लिए इस्तेमाल नहीं किया जाना चाहिए।
जैसा कि मैंने पहले कहा, apply_filters('the_content', $content);
इसका मतलब कच्चे पोस्ट सामग्री के लिए प्रारूपण लागू करने के लिए किया जाता है।
आपके पास यहां दो विकल्प हैं
do_shortcode
सीधे टेम्प्लेट फ़ाइलों में उपयोग करें , जिसे मैं फ़ंक्शन का उपयोग करने की अनुशंसा नहीं करूंगा क्योंकि शोर्टकोड को पार्स करने की आवश्यकता नहीं है
विशेष पृष्ठ / पोस्ट के लिए पाठ संपादक में सीधे शोर्ट का उपयोग करें
मैं गंभीरता से अनुशंसा करूंगा कि आप अपनी संरचनाओं पर एक नया नया रूप दें और आप क्या हासिल करना चाहते हैं। कस्टम फ़ील्ड टेक्स्ट एडिटर नहीं हैं और शॉर्टकोड या स्लाइडर्स निष्पादित नहीं कर सकते हैं।
मेरी सिफारिश शायद कस्टम विगेट्स या एक सिस्टम में देखने की होगी जिसे आप कस्टम फ़ील्ड के साथ उपयोग कर सकते हैं