현재 사용중인 편집기가 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() )
물론 이것은 관리자 패널 페이지와 내부 데이터가 함수를 호출 할 준비가되었을 때 확인해야합니다. 따라서 적절한 hook을 사용하여 확인해야합니다 . 예를 들어, 후크를 사용하여 이것을 확인하면 작동하지 않습니다init
.
Gutenberg 자체는 후크를 사용하여로드 된 is_gutenberg_page()
함수에서 gutenberg_init()
함수를 확인합니다 replace_editor
. 따라서 replace_editor
후크는이 검사를 수행하기에 좋은 장소입니다.
그러나 다음과 같은 admin_enqueue_scripts
이유로 확인 을 위해 사용하는 것이 좋습니다 .
admin_enqueue_scripts
is_gutenberg_page()
구텐베르크가 동일한 점검을 수행 한 후 처음으로 발사되는 후크입니다 .
구텐베르크의 특성상 목적에 따라 외부 스크립트 / 스타일을로드 할 가능성이 높습니다.
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
기능을 사용 하여이 게시물 유형에 대해 gutenberg가 활성화되어 있는지 확인할 수 있습니다 .
if(use_block_editor_for_post_type($postType)){
//Gutenberg is active.
}
has_blocks
내용을 확인하는 방법이지만 관리 영역에서 블록 편집기 화면이 사용되고 있는지 확인하는 경우 새 블록 편집기와 Gutenberg 플러그인을 모두 고려하여 이와 같은 검사를 수행 할 수 있습니다. :
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의 버그 인 것 같습니다.