क्या पोस्ट कंटेंट और गैलरी शॉर्ट कोड को विभाजित करने का एक तरीका है। मैं अपनी सामान्य सामग्री के बाहर गैलरी प्रदर्शित करना चाहता हूं, चाहे वह कहां या कहां रखी हो। मैं शोर्टकोड प्राप्त करने के लिए इसका उपयोग कर सकता हूं:
if(has_shortcode(get_the_content(), 'gallery')){
$pattern = get_shortcode_regex();
preg_match("/$pattern/s", get_the_content(), $matches);
echo do_shortcode($matches[0]);
}
लेकिन यह काम नहीं करता है अगर गैलरी लघु कोड पहला उदाहरण नहीं है। क्या मेरी सामग्री और गैलरी को पूरी तरह से विभाजित करने का कोई तरीका है?
संपादित करें: मेरे पास एक अर्ध-समाधान है लेकिन इसके बारे में जाने के लिए एक लंबे घुमावदार रास्ते की तरह लगता है। यह पहली बार पोस्ट में पहला शोर्ट पकड़ लेता है (जिसे मुझे केवल "गैलरी" शोर्ट चाहिए) के बाद से तय करना होगा, तब कंटेंट से सभी शोर्टकोड को हटा देता है (फिर से, वास्तव में मैं जो करना चाहता हूं वह नहीं करता।
<?php if(has_shortcode(get_the_content(), 'gallery')) : ?>
<?php
$pattern = get_shortcode_regex();
preg_match("/$pattern/s", get_the_content(), $matches);
?>
<div id="content">
<?php echo strip_shortcodes(get_the_content()); ?>
</div>
<div id="gallery">
<?php echo do_shortcode($matches[0]); ?>
</div>
<?php endif; ?>
# 2 संपादित करें - ठीक है, मैं केवल पोस्ट में गैलरी शॉर्टकोड प्राप्त करने में सक्षम हूं। मैंने गैलरी शोर्ट फॉर्म को निकालने के लिए एक फिल्टर भी जोड़ा है the_content()
- समस्या यह है कि इसके पोस्ट करने के बाद से शॉर्टकोड को हटाना जरूरी नहीं है, लेकिन इसकी मुझे "do_shortcode ()" चलाने की अनुमति नहीं है
functions.php
function remove_gallery($content) {
global $post;
if($post->post_type == 'artcpt')
remove_shortcode('gallery', $content);
return $content;
}
add_filter( 'the_content', 'remove_gallery', 6);
सूचित करते रहना
<?php preg_match('/\[gallery ids=[^\]]+\]/', get_the_content(), $matches); ?>
<div id="content">
<?php the_content(); ?>
</div>
<div id="gallery">
<?php echo do_shortcode($matches[0]); ?>
</div>
लूप में यह मेरा लघु कोड ट्वाइस लौटा देगा (मैं एक ही पृष्ठ पर दो बार, दो बार लूप किया जाना चाहिए - इसलिए यह do_shortcode () नहीं चल रहा है)। यकीन नहीं है कि क्यों।
the_content()
। ट्रिकियर अगर वहाँ पहले से ही इस तरह के कई पृष्ठ हैं, हालांकि।