use_block_editor_for_post()WP 5.0.0

Проверяет, поддерживает ли указанный пост (запись) редактирование через редактор блоков (Гутенберг).

Редактор блоков зависит от REST API, поэтому если при регистрации типа записи параметр show_in_rest=false, функция вернет false.

Используйте use_block_editor_for_post_type(), когда нужно проверить поддержку блочного редактора по типу записи, а не для отдельной записи.

Работает на основе: use_block_editor_for_post_type()
1 раз — 0.0007281 сек (медленно) | 50000 раз — 0.34 сек (очень быстро) | PHP 8.1.27, WP 6.5.2
Хуки из функции

Возвращает

true|false. Функция вернет true, если запись редактируется через редактор блоков, и false в противном случае.

Использование

use_block_editor_for_post( $post );
$post(int|WP_Post) (обязательный)
ID или объект поста WP_Post.

Примеры

0

#1 Пример использования функции

Фрагмент кода из плагина "Elementor Website Builder":

add_action( 'admin_print_scripts-edit.php', [ __CLASS__, 'add_new_button_to_gutenberg' ], 11 );

function add_new_button_to_gutenberg() {
	global $typenow;

	if ( ! User::is_current_user_can_edit_post_type( $typenow ) ) {
		return;
	}

	// Introduced in WP 5.0
	if ( function_exists( 'use_block_editor_for_post' ) && ! use_block_editor_for_post( $typenow ) ) {
		return;
	}

	// Deprecated/removed in Gutenberg plugin v5.3.0
	if ( function_exists( 'gutenberg_can_edit_post_type' ) && ! gutenberg_can_edit_post_type( $typenow ) ) {
		return;
	}

	?>
	<script type="text/javascript">
		document.addEventListener( 'DOMContentLoaded', function() {
			var dropdown = document.querySelector( '#split-page-title-action .dropdown' );

			if ( ! dropdown ) {
				return;
			}

			var url = '<?php echo esc_url( Plugin::$instance->documents->get_create_new_post_url( $typenow ) ); ?>';

			dropdown.insertAdjacentHTML( 'afterbegin', '<a href="' + url + '">Elementor</a>' );
		} );
	</script>
	<?php
}

Список изменений

С версии 5.0.0 Введена.
С версии 6.1.0 Moved to wp-includes from wp-admin.

Код use_block_editor_for_post() WP 6.6.2

function use_block_editor_for_post( $post ) {
	$post = get_post( $post );

	if ( ! $post ) {
		return false;
	}

	// We're in the meta box loader, so don't use the block editor.
	if ( is_admin() && isset( $_GET['meta-box-loader'] ) ) {
		check_admin_referer( 'meta-box-loader', 'meta-box-loader-nonce' );
		return false;
	}

	$use_block_editor = use_block_editor_for_post_type( $post->post_type );

	/**
	 * Filters whether a post is able to be edited in the block editor.
	 *
	 * @since 5.0.0
	 *
	 * @param bool    $use_block_editor Whether the post can be edited or not.
	 * @param WP_Post $post             The post being checked.
	 */
	return apply_filters( 'use_block_editor_for_post', $use_block_editor, $post );
}