গুটেনবার্গ ব্লকগুলি কি পোস্ট পোস্টে রয়েছে তা পরীক্ষা করুন


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()("এস" ব্যতীত)।
নিকো প্রট

@ নিকোপ্র্যাট আমরা সঠিক পদ্ধতিগুলি প্রতিফলিত করার জন্য উত্তরটি আপডেট করেছি
জেফ্রি ভন গ্রাম্বকো

মনে রাখবেন এই মুহুর্তে একটি জ্ঞাত সমস্যা আছে যেখানে NULparse_blocks() অ্যারে উপাদান হিসাবে অস্তিত্বহীন ব্লকগুলি প্রদান করে - core.trac.wordpress.org/ticket/45312
লি

2

আমি লেখার মতো সমাধানটি গুটেনবার্গ এইচটিএমএল মন্তব্যগুলির জন্য পোস্ট_কন্টেন্টটি পরীক্ষা করে দেখি check ভবিষ্যতে গুটেনবার্গের পরিবর্তনের কারণে ভবিষ্যতে এটি কাজ করতে পারে না।

<?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

৫.০ প্রকাশের পরে এই ফাংশনগুলি গুটেনবার্গের সাথে এখন মূল অংশে সংহত করা হয়েছে। আমি কল্পনা করি, তবে গুটেনবার্গ স্ট্যান্ডলোন প্লাগইনে এই ফাংশনগুলি এখনও বিদ্যমান বলে নিশ্চিত করে নি।

পরিবর্তে gutenberg_content_has_blocksব্যবহারhas_blocks

পরিবর্তে gutenberg_parse_blocksব্যবহারparse_blocks


2
@ জেফ্রেভিওন গ্রাম্বকো জিনিসটি হ'ল, আয়ান-হোয়েটকে সম্পাদনা করতে বা মন্তব্য করতে কম রেপ করতে হবে =)
হনক 31
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.