Gutenbergと呼ばれる新しいエディタは、4.9ではプラグインとして、5.0ではBlock Editorと呼ばれるコア機能としてここにあります。それに関しては、サイトコンソールの投稿やページを編集するためにどのエディタを使用するかをプログラムで決定する必要があります。どうやってするの?
更新: 同様の質問に対する時代遅れの回答がいくつかあります。
gutenberg_post_has_blocks()
- この関数はGutenbergプラグインにのみ存在し、5.0コアには存在しませんis_gutenberg_page()
- 同じthe_gutenberg_project()
- 同じhas_blocks()
- クラシックエディタがオンになっていて、そのオプション "すべてのユーザーのデフォルトエディタ" = "ブロックエディタ"の場合は機能しません(falseを返します)Call to undefined function get_current_screen()
それで、この質問と答えにコメントする前に、あなたが何を提案するかをチェックするために仕事をしてください。 4.9と現在のバージョンのWordPress、そしてClassic EditorとGutenberg/Block Editorのすべての可能な組み合わせで、今それをチェックしてください。何かへのリンクではなく、テスト済みの解決策について話し合うのが嬉しいです。
いくつかの変種があります。
上記のすべての亜種は、次のコードで処理できます。
/**
* Check if Block Editor is active.
* Must only be used after plugins_loaded action is fired.
*
* @return bool
*/
function is_active() {
// Gutenberg plugin is installed and activated.
$gutenberg = ! ( false === has_filter( 'replace_editor', 'gutenberg_init' ) );
// Block editor since 5.0.
$block_editor = version_compare( $GLOBALS['wp_version'], '5.0-beta', '>' );
if ( ! $gutenberg && ! $block_editor ) {
return false;
}
if ( is_classic_editor_plugin_active() ) {
$editor_option = get_option( 'classic-editor-replace' );
$block_editor_active = array( 'no-replace', 'block' );
return in_array( $editor_option, $block_editor_active, true );
}
return true;
}
/**
* Check if Classic Editor plugin is active.
*
* @return bool
*/
function is_classic_editor_plugin_active() {
if ( ! function_exists( 'is_plugin_active' ) ) {
include_once ABSPATH . 'wp-admin/includes/plugin.php';
}
if ( is_plugin_active( 'classic-editor/classic-editor.php' ) ) {
return true;
}
return false;
}
ブロックエディタが何らかの方法でアクティブになっている場合、関数はtrueを返します。従来のエディタがある場合はfalseを返します。この関数はplugins_loaded
アクションが起動された後にのみ使用されなければなりません。
P.S classic-editor-replace
オプションがreplace
とno-replace
ではなくclassic
とblock
の値をとるようになったため、Classic Editorプラグインのバージョン1.2のリリースにより、コードが更新されます。
あなたが使用することができます
add_action( 'enqueue_block_editor_assets', 'your_function_name' );
これはGutenbergでコンテンツを編集するときにのみ発生します。