Хук use_block_editor_for_post
позволяет разработчикам WordPress управлять использованием редактора блоков (Gutenberg) для отдельных записей. С его помощью можно включать или отключать редактор блоков для конкретных записей, что может быть полезно для кастомизации интерфейса администратора.
apply_filters( ‘use_block_editor_for_post’, bool $use_block_editor, WP_Post $post )
Этот фильтр применяется для проверки, можно ли редактировать конкретную запись с помощью редактора блоков. Он возвращает булево значение: true
, если редактор блоков должен быть активен для записи, и false
, если он отключен.
Параметры
- $use_block_editor (bool): Определяет, будет ли запись редактироваться в редакторе блоков.
- $post (WP_Post): Объект записи, для которой проверяется возможность редактирования.
Отключение редактора блоков для записи с определенным ID
Этот пример отключает редактор блоков для записи с ID 123
. Все остальные записи будут по-прежнему открываться в редакторе блоков, если он включен по умолчанию.
add_filter( 'use_block_editor_for_post', 'disable_gutenberg_for_specific_post', 10, 2 );
function disable_gutenberg_for_specific_post( $use_block_editor, $post ) {
if ( $post->ID === 123 ) {
return false;
}
return $use_block_editor;
}
Теперь запись с ID 10
будет редактироваться в классическом редакторе.
Включение редактора блоков только для записей типа product
В следующем примере редактор блоков включается только для записей типа product
. Все остальные типы записей будут открываться в классическом редакторе.
add_filter( 'use_block_editor_for_post', 'enable_gutenberg_for_product_posts', 10, 2 );
function enable_gutenberg_for_product_posts( $use_block_editor, $post ) {
if ( 'product' === $post->post_type ) {
return true;
}
return false;
}
Этот код делает редактор блоков доступным только для записей типа product
, оставляя другие записи с классическим редактором.
Отключение редактора блоков для всех записей в определенной категории
В этом примере редактор блоков отключается для всех записей, относящихся к категории news
.
add_filter( 'use_block_editor_for_post', 'disable_gutenberg_for_news_category', 10, 2 );
function disable_gutenberg_for_news_category( $use_block_editor, $post ) {
if ( has_category( 'news', $post ) ) {
return false;
}
return $use_block_editor;
}
Этот фильтр проверяет, есть ли у записи категория news
, и отключает редактор блоков, если условие выполняется.
Отключение редактора блоков для всех новых записей
Иногда может понадобиться использовать классический редактор для всех новых записей, пока они не будут сохранены впервые. Этот пример проверяет, является ли запись новой (еще не сохраненной в базе данных), и отключает редактор блоков для таких записей.
add_filter( 'use_block_editor_for_post', 'disable_gutenberg_for_new_posts', 10, 2 );
function disable_gutenberg_for_new_posts( $use_block_editor, $post ) {
if ( 'auto-draft' === $post->post_status ) {
return false;
}
return $use_block_editor;
}
Здесь проверяется статус записи. Если запись находится в статусе auto-draft
(авточерновик), для нее будет использоваться классический редактор.
Условное включение редактора блоков по дате создания записи
Этот пример демонстрирует, как можно включить редактор блоков только для записей, созданных после определенной даты. Если запись создана до 1 января 2023 года, редактор блоков будет отключен.
add_filter( 'use_block_editor_for_post', 'enable_gutenberg_for_recent_posts', 10, 2 );
function enable_gutenberg_for_recent_posts( $use_block_editor, $post ) {
$date_threshold = strtotime( '2023-01-01' );
$post_date = strtotime( $post->post_date );
if ( $post_date < $date_threshold ) {
return false;
}
return $use_block_editor;
}
Этот фильтр позволяет ограничить использование редактора блоков для записей, созданных после определенной даты.
Заключение
Хук use_block_editor_for_post
предоставляет гибкий способ управления редактором блоков в зависимости от различных условий. Этот фильтр может быть полезен для сайтов, где требуется использовать классический редактор для определенных записей или типов записей, или для интеграции с темами и плагинами, которые требуют специальных условий для отображения контента.