В этой статье мы рассмотрим функцию has_blocks()
в WordPress, которая используется для проверки наличия любых блоков Gutenberg в содержимом поста или страницы. Это полезный инструмент для разработчиков, желающих адаптировать контент или выполнить определённые действия в зависимости от того, содержит ли пост блоки.
Описание функции
Функция has_blocks()
проверяет, содержатся ли блоки Gutenberg в указанном контенте поста или произвольном строковом значении.
has_blocks( $post = null )
Параметры:
$post
(целое число | строка | WP_Post | null): Можно указать ID поста, объект поста или строку для проверки. По умолчанию используется текущий пост в цикле.
Возвращаемое значение:
true
илиfalse
в зависимости от наличия блоков.
Примеры использования
Рассмотрим несколько примеров использования функции has_blocks()
.
Показ рекламного блока, если пост содержит блоки
Если пост содержит блоки Gutenberg, можно показать рекламный блок:
if ( has_blocks() ) {
echo '<div class="ad-banner">Реклама</div>';
// Ваш код для вывода контента поста
}
Вывод уведомления о поддержке блоков
Вы можете добавить уведомление о поддержке блоков в начале поста, если пост содержит блоки:
function show_blocks_support_notice() {
if ( has_blocks() ) {
echo '<div class="notice">Этот пост содержит блоки Gutenberg. Для лучшего отображения используйте современный браузер.</div>';
}
}
add_action( 'the_content', 'show_blocks_support_notice' );
Условное добавление класса к посту
Добавьте специальный CSS класс к посту, если он содержит блоки, чтобы изменить его стилизацию:
function add_class_for_block_posts( $classes ) {
if ( has_blocks() ) {
$classes[] = 'has-gutenberg-blocks';
}
return $classes;
}
add_filter( 'post_class', 'add_class_for_block_posts' );
Создание резервной копии контента
Вы можете автоматически создавать резервную копию контента поста, если он содержит блоки:
function backup_post_content( $post_id ) {
if ( has_blocks( $post_id ) ) {
$post = get_post( $post_id );
$backup_content = $post->post_content;
// Сохраните $backup_content в файл или в базу данных
}
}
add_action( 'save_post', 'backup_post_content' );
Условный вывод виджета
Покажите определённый виджет только на страницах и постах, которые содержат блоки:
function conditional_widget_display() {
if ( is_singular() && has_blocks() ) {
dynamic_sidebar( 'custom_widget_area' );
}
}
add_action( 'wp_sidebar', 'conditional_widget_display' );
Заключение по has_blocks
Функция has_blocks()
предоставляет простой способ проверки наличия блоков Gutenberg в постах и страницах WordPress. Это позволяет разработчикам создавать более динамичные и адаптивные темы и плагины. Используйте приведённые выше примеры, чтобы улучшить функциональность вашего сайта и создать более гибкий пользовательский опыт.