Как вывести поле на опреденной странице в WordPress?
Всем привет, нужно вывести поле ACF внутри определенного типа материалов а так же внутри страницы этого типа.
Хочу применить фильтр в function.php
На просторах стети нашел пример
add_filter( 'render_block_core/post-title', function( $block_content, $block ) { echo '<pre>'; var_dump($block); if(!empty($block["attrs"]["className"]) && $block["attrs"]["className"] != "company") return $block_content; return sprintf("<div class='%s'>Дата : %s</div>%s","has-link-color wp-block-post-title has-extra-large-font-size has-crc-65-font-family",get_field("data_konczerta"),$block_content); </div>%s","10px",get_field("data_konczerta"),$block_content); }, 10, 2 ); |
add_filter( 'render_block_core/post-title', function( $block_content, $block ) { echo '<pre>'; var_dump($block); if(!empty($block["attrs"]["className"]) && $block["attrs"]["className"] != "company") return $block_content; return sprintf("<div class='%s'>Дата : %s</div>%s","has-link-color wp-block-post-title has-extra-large-font-size has-crc-65-font-family",get_field("data_konczerta"),$block_content); </div>%s","10px",get_field("data_konczerta"),$block_content); }, 10, 2 );
по логике должно искать блок с определнным CSS но оно не работает.
Дополнительно:
Ошибки синтаксиса нет? Скобки {} везде правильно открыли и закрыли?
render_block_core/post-title ?? это заголовок
Настройки в ацф
Иерархия шаблонов
Функции условий
Дочерние темы
Написание плагина
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Если нужно вывести ACF-поле только на определённой странице или внутри определённого типа материалов, сначала выберите правильную точку вывода. Фильтр
render_block_core/post-titleсработает только для блока Gutenberg “Post Title”, и он не всегда подходит для обычных шаблонов темы. Для классического single.php проще вывести поле прямо в шаблоне. Для блочной темы можно использовать block render filter.В Вашем коде есть несколько проблем: используется
echoвнутри фильтра, проверка класса написана небезопасно, частьsprintf()выглядит обрезанной. Фильтр должен возвращать строку, а не печатать её напрямую.Пример аккуратной подстановки поля перед заголовком только для блока с классом
company:add_filter('render_block_core/post-title', function ($block_content, $block) { $class = $block['attrs']['className'] ?? ''; if (strpos($class, 'company') === false) { return $block_content; } $date = get_field('data_konczerta', get_the_ID()); if (!$date) { return $block_content; } $extra = sprintf( '<div class="company-date">Дата: %s</div>', esc_html($date) ); return $extra . $block_content; }, 10, 2);
Если поле нужно выводить только в конкретном CPT, добавьте проверку
get_post_type(). Если только на конкретной странице, проверяйтеis_page(123)илиget_the_ID(). Для ACF всегда используйтеget_field()и экранируйте вывод: текст черезesc_html(), HTML черезwp_kses_post(), URL черезesc_url().