Шорткод

Оригинальное название: shortcode

Коротко

Код в квадратных скобках вроде [gallery] или [contact-form-7 id="5"], который автор вставляет в текст, а WordPress при выводе заменяет результатом работы PHP-функции.

Что такое «Шорткод»

Шорткоды появились в WordPress 2.5 как способ дать редактору «кнопку» сложной функции без знания HTML и PHP. Автор пишет в тексте короткий тег, плагин регистрирует для него обработчик, и при показе страницы на месте тега оказывается форма, слайдер, таблица цен или видео. В базе хранится сам тег, поэтому результат всегда актуален и пересчитывается при каждом выводе.

Пример: телефон филиала

add_shortcode( 'phone', function ( $atts ) {
    $atts   = shortcode_atts( array( 'city' => 'msk' ), $atts, 'phone' );
    $phones = array( 'msk' => '+7 495 000-00-00', 'spb' => '+7 812 000-00-00' );
    $num    = $phones[ $atts['city'] ] ?? $phones['msk'];
    return '<a href="tel:' . esc_attr( preg_replace( '/[^\d+]/', '', $num ) ) . '">'
        . esc_html( $num ) . '</a>';
} );

В тексте страницы это выглядит как [phone city="spb"]. Функция shortcode_atts() подставляет значения по умолчанию и отбрасывает неизвестные атрибуты. Шорткод может быть и парным: [note]текст[/note] — тогда обработчик получает содержимое вторым аргументом.

Типичные ошибки

  • echo вместо return. Выведенный через echo HTML окажется над текстом записи, а не на месте шорткода.
  • Шорткоды от темы. После смены темы они перестают работать, и на страницах появляется сырой текст в скобках. Свои шорткоды правильнее размещать в плагине.
  • Шорткод там, где его не обрабатывают. В заголовках, мета-полях и некоторых виджетах тег не заменится сам. В своём коде для этого вызывают do_shortcode().
  • Нужно показать тег как текст. Двойные скобки [[phone]] выводят шорткод без обработки — удобно для инструкций.

Шорткод в блочном редакторе

В редакторе блоков для шорткода есть отдельный блок, и старые шорткоды продолжают работать. Но для новых функций правильнее делать динамический блок: он показывает результат прямо в редакторе и даёт настройки в боковой панели вместо атрибутов, которые надо помнить наизусть. Шорткоды остаются там, где важна совместимость, — например, формы Contact Form 7 до сих пор вставляются именно так. Как настроить такую форму, чтобы заявки доходили, разобрано в статье о форме обратной связи на WordPress.

Обновлено:

Все термины раздела «WordPress»

Что будем искать? Например,Продвижение