現在使用されているエディターがWordPressプラグインのGutenbergかどうかを確認するにはどうすればよいですか?
Gutenbergが不足post_submitbox_misc_actions
しているため、これが必要です。したがって、現在のエディターがGutenbergである場合にのみ使用されるフォールバックが必要です。
現在使用されているエディターがWordPressプラグインのGutenbergかどうかを確認するにはどうすればよいですか?
Gutenbergが不足post_submitbox_misc_actions
しているため、これが必要です。したがって、現在のエディターがGutenbergである場合にのみ使用されるフォールバックが必要です。
回答:
ありis_gutenberg_page()
あなたがグーテンベルクをアクティブにしたときに存在するだろう機能は、あなたがチェックすることがあります。
if( function_exists( 'is_gutenberg_page' ) )
これは、Gutenbergがアクティブになっているかどうかのみをチェックし、関数自体は、現在のエディターがGutenbergをロードするように設定されているかどうかをチェックします。したがって、コードは次のようになります。
if( function_exists( 'is_gutenberg_page' ) && is_gutenberg_page() )
もちろん、これは管理パネルのページから、および内部データが関数を呼び出す準備ができたときに確認する必要があります。したがって、適切なフックを使用してチェックを行う必要があります。たとえば、フックを使用してこれをチェックinit
すると、機能しません。
Gutenberg自体は、フックを使用してロードされるis_gutenberg_page()
関数からgutenberg_init()
関数をチェックしますreplace_editor
。したがって、replace_editor
フックはこのチェックを行うのに適した場所です。
ただし、admin_enqueue_scripts
チェックを行うための使用をお勧めします。
admin_enqueue_scripts
is_gutenberg_page()
Gutenbergが同じチェックを行った後に起動される最初のフックです。
Gutenbergの性質により、目的に応じて外部スクリプト/スタイルをロードする可能性が高くなります。
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.
}
}
is_block_editor
wp5.0 +に必要です
この関数is_gutenberg_page
はGutenbergプラグインからのもので、is_block_editor
メソッドは5.0から使用可能です。以下のこの関数は、両方を単一のチェック関数に結合します。
以下のコードは、Freemius SDKからのもので、チームの小道具です。
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;
}
GutenbergはWordPress 5.0に統合されており、use_block_editor_for_post
関数を使用して確認できるようになりました。
if(use_block_editor_for_post($post)){
//Block editor is active for this post.
}
または、新しい投稿を作成するときにuse_block_editor_for_post_type
、この投稿タイプでグーテンベルクがアクティブになっているかどうかを確認する関数を使用できます。
if(use_block_editor_for_post_type($postType)){
//Gutenberg is active.
}
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)
)場合にのみ機能します。これはWPのバグのようです。
Gutenberg 3.6では、has_blocks
やなどの関数が導入されましたhas_block
。これらは非推奨のgutenberg_post_has_blocks
機能を置き換えます。
has_blocks
投稿の編集中にGutenbergが使用されたよりもtrueを返す場合。
グローバルが既に設定されている場合(クエリループなど)、has_blocks()
paramsを使用せずに使用するか$post
、投稿コンテンツを直接チェックします。has_blocks( $content )
WP 5.0以降では、関数 'has_blocks'が/wp-includes/blocks.phpに存在するため、次を使用できます。
if ( function_exists('has_blocks')) {
$this->isGutenberg = true;
}
else {
$this->isGutenberg = false;
}