जाँच करें कि Gutenberg ब्लॉक post_content में क्या हैं


20

मैं एक ऐसे डिज़ाइन पर काम कर रहा हूं जिसमें अलग स्टाइल है अगर एक निश्चित गुटेनबर्ग ब्लॉक एक पृष्ठ पर मौजूद है। दूसरे शब्दों में, यदि पहला ब्लॉक एक कस्टम निर्मित गुटेनबर्ग ब्लॉक है, तो बनाया गया डिज़ाइन विकल्पों के कारण पोस्ट_टील को कहीं और प्रदान किया जाता है।

वर्डप्रेस में कोई भी फ़ंक्शन है जो पोस्ट_ कॉन्टेंट में मौजूद सभी गुटेनबर्ग ब्लॉकों की सूची प्राप्त करने के लिए है?


1
एक वेबसाइट है जोब्लब्लॉक डॉट कॉम है। जब आप एक वेब पेज यूआरएल टाइप करते हैं, तो यह पेज को स्कैन करता है और यह पता लगाता है कि पेज में कौन से गुटेनबर्ग ब्लॉक का उपयोग किया गया है।
तेना बाबू

जवाबों:


29

वर्डप्रेस 5.0+ में इसके लिए एक फ़ंक्शन है parse_blocks():। यह देखने के लिए कि क्या पोस्ट का पहला ब्लॉक हेडिंग ब्लॉक है, आप यह करेंगे:

$post = get_post(); 

if ( has_blocks( $post->post_content ) ) {
    $blocks = parse_blocks( $post->post_content );

    if ( $blocks[0]['blockName'] === 'core/heading' ) {
    }
}

धन्यवाद! मुझे यह फ़ंक्शन नहीं मिला। पूरी तरह से पर्याप्त रूप से मेरा कस्टम कोड मूल रूप से एक ही काम करता है लेकिन पूरे बहुत कम कोड के साथ! किसी भी तरह, यह उचित रूप में निर्मित फ़ंक्शन के रूप में स्वीकार किए जाते हैं।
जेफरी वॉन ग्रुम्बको

3
इस फ़ंक्शन को हटा दिया गया है (लेकिन केवल नाम बदला गया है), आपको has_blocks($blockName)इसके बजाय उपयोग करना चाहिए : github.com/WordPress/gutenberg/pull/8631/commits/… । वहाँ भी है has_block()("एस" के बिना)।
निको प्रात

@NicoPrat हमने सही तरीकों को प्रतिबिंबित करने के लिए उत्तर अपडेट किया है
जेफरी वॉन ग्रुम्बको

ध्यान रखें कि इस समय एक ज्ञात मुद्दा है जहां parse_blocks()गैर-मौजूद ब्लॉक को NULL सरणी तत्वों के रूप में लौटाता है
Lee

2

मैं लेखन के रूप में उपयोग कर रहा हूँ समाधान Gutenberg HTML टिप्पणियों के लिए post_content की जाँच करें। भविष्य में गुटेनबर्ग परिवर्तनों के कारण भविष्य में यह काम नहीं कर सकता है।

<?php    
$post_content = get_the_content( get_the_ID() ); // Get the post_content
preg_match_all('<!-- /wp:(.*?) -->', $post_content, $blocks); // Get all matches in between <!-- /wp: --> strings

// $blocks[1] contains the names of all the blocks present in the post_content
if ( in_array( 'heading', $blocks[1] ) ) {
    // Post content contains a wp:heading block
}
else {
    // Post content does not contain a wp:heading block
}

0

5.0 की रिहाई के रूप में इन कार्यों को गुटेनबर्ग के साथ चित्रित किया गया है जो अब कोर में एकीकृत हैं। मैं कल्पना करता हूं, लेकिन यह पुष्टि नहीं की है कि ये कार्य अभी भी गुटेनबर्ग स्टैंडअलोन प्लगइन में मौजूद हैं।

gutenberg_content_has_blocksउपयोग के बजायhas_blocks

gutenberg_parse_blocksउपयोग के बजायparse_blocks


2
@ जेफ्रेवनग्रेम्बकोव बात है, इयान-होयटे को संपादित करने या टिप्पणी करने के लिए कम प्रतिनिधि है =)
honk31
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.