Полезные статьи для
WordPress-разработчиков

Вывод ACF/SCF поля через шорткоды: упрощаем работу с Elementor и Yoast SEO

Сегодня хочу поделиться готовым решением, которое упрощает работу с кастомными полями ACF (Advanced Custom Fields) и его форком SCF (Secure Custom Fields). Речь пойдёт об универсальном шорткоде, который позволяет легко выводить любые поля в Elementor, Bricks Builder и даже в метатегах Yoast SEO!

Что делает этот код?

Код создаёт шорткод [scf], который может:

  1. Выводить значения ACF/SCF полей в любом месте сайта
  2. Работать с полями из страницы настроек (options page)
  3. Автоматически подставлять значения из текущей записи
  4. Работать в Yoast SEO для динамических метатегов
// Поле SCF через шорткод
// Шорткод [scf field="field_name"]
// Берёт значение из ACF options page,
// если там пусто — из текущей записи
// ==============================
if ( ! function_exists( 'scf_inline_shortcode' ) ) {

    function scf_inline_shortcode( $atts ) {
        $atts = shortcode_atts(
            array(
                'field'   => '',
                'post_id' => 0,
            ),
            $atts
        );

        if ( empty( $atts['field'] ) ) {
            return '';
        }

        // 1) пробуем взять со страницы настроек (options page)
        $value = get_field( $atts['field'], 'option' );

        // 2) если в настройках пусто – берём из записи
        if ( $value === null || $value === '' ) {
            $post_id = $atts['post_id'] ? (int) $atts['post_id'] : get_the_ID();
            if ( $post_id ) {
                $value = get_field( $atts['field'], $post_id );
            }
        }

        return $value ? esc_html( $value ) : '';
    }

    add_shortcode( 'scf', 'scf_inline_shortcode' );
}

// ==============================
// Включаем шорткоды в полях Yoast SEO
// (Title, Meta Description, Open Graph, Twitter)
// ==============================

// Title и Meta Description
add_filter( 'wpseo_title', 'do_shortcode' );
add_filter( 'wpseo_metadesc', 'do_shortcode' );

// Open Graph (для соцсетей / превью ссылок)
add_filter( 'wpseo_opengraph_title', 'do_shortcode' );
add_filter( 'wpseo_opengraph_desc', 'do_shortcode' );

// Twitter Card
add_filter( 'wpseo_twitter_title', 'do_shortcode' );
add_filter( 'wpseo_twitter_description', 'do_shortcode' );

Как использовать?

1. В Elementor/Bricks Builder:

Просто добавьте текстовый виджет и используйте шорткод:

[scf field="ваше_поле"]

2. Разные варианты использования:

<!-- Просто поле -->
[scf field="price"]

<!-- Поле из определённой записи -->
[scf field="price" post_id="123"]

<!-- В Yoast SEO метатегах (в настройках Yoast) -->
%%title%% | Купить за [scf field="price"] руб.

Ключевые преимущества

1. Универсальность

  • Работает с ACF и SCF (используется один и тот же синтаксис get_field())
  • Поддерживает все типы полей (текст, число, изображение, ссылка и т.д.)

2. Умный порядок выборки

Код сначала проверяет страницу настроек ('option'), потом текущую запись. Это удобно, когда у вас есть:

  • Общие настройки сайта (телефон, email)
  • Переопределение для конкретных страниц

3. Безопасность

Используется esc_html() для экранирования вывода – защита от XSS-атак.

4. Интеграция с Yoast SEO

Строки add_filter('wpseo_title', 'do_shortcode') позволяют использовать шорткоды в:

  • Заголовках страниц
  • Мета-описаниях
  • Open Graph тегах

Установка и использование

  1. Добавьте код в functions.php дочерней темы или через Code Snippets
  2. Создайте ACF/SCF поля в админке WordPress
  3. Начните использовать шорткоды в любом месте

Почему это удобно?

  • Не нужно писать PHP-код для каждого поля
  • Единый синтаксис для всех полей и страниц
  • Работает в визуальных билдерах (Elementor, Bricks)
  • Динамические метатеги в Yoast SEO

Этот небольшой сниппет стал для меня настоящим спасением при работе с клиентскими сайтами. Больше не нужно создавать десятки кастомных шорткодов для каждого поля – один универсальный код решает все задачи!

Попробуйте и вы! Если есть вопросы или идеи по улучшению – пишите в комментариях!

Последние статьи