গুটেনবার্গ বর্তমানে ব্যবহার করছে কিনা তা পরীক্ষা করে দেখুন


13

বর্তমানে যে সম্পাদকটি ব্যবহৃত হচ্ছে তা কোনও ওয়ার্ডপ্রেস প্লাগইনে গুটেনবার্গ কিনা তা আমি কীভাবে পরীক্ষা করতে পারি?

আমার এটি দরকার কারণ গুটেনবার্গের অভাব রয়েছে post_submitbox_misc_actions, সুতরাং আমার একটি ফ্যালব্যাক প্রয়োজন যা কেবলমাত্র বর্তমান সম্পাদক গুটেনবার্গ হলেই ব্যবহৃত হবে।


আপনি কি ফাংশন_এক্সিস্টগুলি (অচিহ্নিত) এর সাথে ইজ_গটনবার_পেজ () এর মতো বোঝাতে চান?
বার্জায়ার

উত্তর:


10

is_gutenberg_page()আপনি গুটেনবার্গ সক্রিয় করার সময় উপস্থিত থাকবে এমন ফাংশন রয়েছে , তাই আপনি পরীক্ষা করতে পারেন:

if( function_exists( 'is_gutenberg_page' ) )

এটি কেবল গুটেনবার্গকে সক্রিয় করা আছে কিনা তা খতিয়ে দেখবে এবং ফাংশনটি নিজেই পরীক্ষা করে দেখাবে যে বর্তমান সম্পাদক গুটেনবার্গ লোড করার জন্য সেট করা আছে কিনা। তাই কোডে পরিণত হয়:

if( function_exists( 'is_gutenberg_page' ) && is_gutenberg_page() )

অবশ্যই এটি অ্যাডমিন প্যানেল পৃষ্ঠা থেকে এবং যখন অভ্যন্তরীণ ডেটা ফাংশনটি কল করার জন্য প্রস্তুত থাকে তখন তা পরীক্ষা করে দেখতে হয়। সুতরাং আপনাকে একটি উপযুক্ত হুক ব্যবহার করে চেকটি করতে হবে । উদাহরণস্বরূপ, আপনি যদি initহুক ব্যবহার করে এটি পরীক্ষা করেন তবে এটি কার্যকর হবে না

গুটেনবার্গ নিজেই is_gutenberg_page()ফাংশন থেকে gutenberg_init()ফাংশনটি পরীক্ষা করে যা replace_editorহুক ব্যবহার করে লোড করা হয় । তাই replace_editorএই চেকটি করার জন্য হুক একটি ভাল জায়গা।

তবে, আমি admin_enqueue_scriptsচেক তৈরির জন্য ব্যবহারের পরামর্শ দেব , যেহেতু:

  1. admin_enqueue_scriptsis_gutenberg_page()গুটেনবার্গ নিজেই একই চেক তৈরি করার পরে প্রথম হুক হ'ল ।

  2. গুটেনবার্গের প্রকৃতির কারণে, আপনি আপনার উদ্দেশ্যে বাহ্যিক স্ক্রিপ্ট / স্টাইল লোড করার সম্ভাবনা বেশি।

  3. admin_enqueue_scriptsএকটি সুপরিচিত হুক এবং এটি কেবল অ্যাডমিন প্যানেল পৃষ্ঠা থেকে বরখাস্ত। সুতরাং সামনের প্রান্তটি এটি দ্বারা প্রভাবিত হয় না।

নমুনা কোড (পরীক্ষিত):

add_action( 'admin_enqueue_scripts', 'wpse_gutenberg_editor_test' );
function wpse_gutenberg_editor_test() {
    if( function_exists( 'is_gutenberg_page' ) && is_gutenberg_page() ) { 
        // your gutenberg editor related CODE here
    }   
    else {
        // this is not gutenberg.
        // this may not even be any editor, you need to check the screen.
    }   
}

2
এটি কেবল গুটেনবার্গ প্লাগইন নিয়ে কাজ করছে, প্লাগইন ইনস্টল করা না থাকলে এটি ডাব্লুপি 5 তে কাজ করে না
ম্যাক্সিম স্কোনি

1
is_block_editorwp5.0 + এর জন্য প্রয়োজনীয়
জ্যাকব র্যাকুইয়া

5

ফাংশনটি is_gutenberg_pageগুটেনবার্গ প্লাগইন থেকে রয়েছে এবং is_block_editorপদ্ধতিটি 5.0 থেকে পাওয়া যায়। নীচের এই ফাংশনটি উভয়কে একটি একক পরীক্ষার ফাংশনে সংযুক্ত করে।

নীচের কোডটি ফ্রিমিয়াস এসডিকে থেকে এসেছে , তাদের দলের প্রপস :

function is_gutenberg_page() {
    if ( function_exists( 'is_gutenberg_page' ) &&
            is_gutenberg_page()
    ) {
        // The Gutenberg plugin is on.
        return true;
    }
    $current_screen = get_current_screen();
    if ( method_exists( $current_screen, 'is_block_editor' ) &&
            $current_screen->is_block_editor()
    ) {
        // Gutenberg page on 5+.
        return true;
    }
    return false;
}

এটি সঠিক উত্তরটি এগিয়ে চলেছে।
জ্যাকব র্যাকুইয়া

4
  1. গুটেনবার্গ 5.0 ওয়ার্ডপ্রেসে সংহত হয়েছে এবং এখন আপনি use_block_editor_for_postফাংশন ব্যবহার করে পরীক্ষা করতে পারেন ।

    if(use_block_editor_for_post($post)){
      //Block editor is active for this post.
    }
  2. বিকল্পভাবে, নতুন পোস্ট তৈরি করার সময় আপনি use_block_editor_for_post_typeগুটেনবার্গ এই পোস্টের ধরণের জন্য সক্রিয় কিনা তা পরীক্ষা করতে ফাংশনটি ব্যবহার করতে পারেন ।

    if(use_block_editor_for_post_type($postType)){
    //Gutenberg is active.
    }

2

has_blocks বিষয়বস্তু যাচাইয়ের উপায়, তবে এটি লক্ষ্য করুন যে আপনি যদি অ্যাডমিন অঞ্চলে ব্লক সম্পাদক স্ক্রিনটি ব্যবহার করা হচ্ছে কিনা তা পরীক্ষা করে দেখছেন, আপনি এটির মতো একটি চেক করতে পারেন (নতুন ব্লক সম্পাদক এবং গুটেনবার্গ প্লাগইন উভয়ের জন্য অ্যাকাউন্টে) :

if (is_admin()) {
    global $current_screen;
    if (!isset($current_screen)) {$current_screen = get_current_screen();}
    if ( ( method_exists($current_screen, 'is_block_editor') && $current_screen->is_block_editor() )
      || ( function_exists('is_gutenberg_page')) && is_gutenberg_page() ) ) {
        // DO SOMETHING HERE
    }
}

এটি দুর্দান্ত, তবে আপনার কল করার দরকার নেই বলে আমি মনে করি global $current_screen
সাইমন কোসর

সত্য, আমি কোডের উদাহরণগুলি এইভাবে রাখি কারণ আমি জানি না তারা কী প্রসঙ্গে থাকবে - তার উপর নির্ভর করে তারা সহজেই ভেঙে যেতে পারে ... আমি এই উদ্দেশ্যে আরও একটি অতিরিক্ত ইস_এডমিন এবং আইসেট চেক যুক্ত করেছি।
মজিক

বর্তমান ডাব্লুপি সংস্করণে (৫.০.২) উপরের স্নিপেটটি current_screenহুকের সাথে সংযুক্ত কোনও ফাংশনে মৃত্যুদন্ড কার্যকর is_block_editorকরার পরে কাজ করে না কারণ তার চেয়ে পরে সেট করা হয়। এটি কেবলমাত্র পরে কাজ করা হলে (যেমন load-(page)) কার্যকর হয় works এটি ডব্লিউপি-তে একটি ত্রুটি বলে মনে হচ্ছে।
marcochiesi

1

গুটেনবার্গ 3.6 ফাংশন পছন্দ চালু has_blocksএবং has_block। তারা অবহেলা gutenberg_post_has_blocksফাংশন প্রতিস্থাপন ।

has_blocksপোস্টটি সম্পাদনার সময় গুটেনবার্গের চেয়ে সত্যটি যদি ফেরত দেওয়া হত।

বিশ্বব্যাপী ইতিমধ্যে সেট করা থাকলে (কোয়েরি লুপের মতো কোনও কিছুর জন্য) has_blocks()প্যারাম ছাড়াই আপনি ব্যবহার $postকরতে পারেন বা পোস্টের সামগ্রী সরাসরি সাথে পরীক্ষা করে দেখতে পারেনhas_blocks( $content )


0

ডাব্লুপি 5.0 এবং উচ্চতর ক্ষেত্রে, একটি ফাংশন 'হ্যাস_ব্লকস' /wp-includes/blocks.php এ উপস্থিত রয়েছে, যাতে আপনি ব্যবহার করতে পারেন:

    if ( function_exists('has_blocks')) {
        $this->isGutenberg = true;
    }
    else {
        $this->isGutenberg = false;
    }
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.