do_shortcode()

Ищет шорткоды в содержании и фильтрует их через соответствующие хуки
Функция WordPress
INT 2.5.0
WordPress Icon

Описание функции

Функция do_shortcode() используется для поиска и фильтрации шорткодов в содержимом. Она принимает строку с содержимым и ищет в ней шорткоды, затем фильтрует их через соответствующие им хуки.

Шорткоды в WordPress представляют собой специальные теги, которые позволяют вставлять динамический контент или функциональность в посты, страницы и другие типы записей. Функция do_shortcode() позволяет обрабатывать эти шорткоды и заменять их на соответствующий контент или результат выполнения функции.

Использование

do_shortcode( string $content, bool $ignore_html = false ): string

Функция do_shortcode() принимает два параметра: $content (обязательный) и $ignore_html (необязательный).

$content — строка с содержимым, в котором нужно искать шорткоды.

$ignore_html — параметр, определяющий, нужно ли игнорировать шорткоды внутри HTML-элементов. По умолчанию установлено значение false.

  • $content (string) — Обязательный. Содержимое, в котором нужно искать шорткоды.
  • $ignore_html (bool) — Необязательный. Если установлено в true, шорткоды внутри HTML-элементов будут пропущены. По умолчанию: false.

Функция do_shortcode() возвращает содержимое с отфильтрованными шорткодами.


$content = "Пример текста с [shortcode]шорткодом[/shortcode].";
$filtered_content = do_shortcode( $content );
// $filtered_content содержит "Пример текста с контентом шорткода."

В данном примере функция do_shortcode() ищет шорткод [shortcode] в строке $content и заменяет его на соответствующий контент или результат выполнения функции. Результат сохраняется в переменной $filtered_content.

Примеры использования

Поиск и замена шорткодов в тексте


/**
 * Функция do_shortcode() позволяет искать и заменять шорткоды в тексте.
 * Возвращает текст с отфильтрованными шорткодами.
 *
 * @param string $content Обязательный. Текст, в котором нужно искать шорткоды.
 * @param bool $ignore_html Необязательный. Если true, шорткоды внутри HTML-элементов будут пропущены. По умолчанию: false.
 * @return string Текст с отфильтрованными шорткодами.
 */
function do_shortcode( $content, $ignore_html = false ) {
    // Реализация функции
}

Применение шорткодов в пользовательских полях


/**
 * Пример применения шорткода в пользовательском поле.
 * 
 * В данном примере используется шорткод [my_custom_shortcode].
 * 
 * @param int $post_id Обязательный. Идентификатор записи.
 * @return string Текст с примененным шорткодом.
 */
function apply_custom_shortcode( $post_id ) {
    $custom_field_value = get_post_meta( $post_id, 'my_custom_field', true );
    $content = do_shortcode( $custom_field_value );
    
    return $content;
}

Использование шорткодов в темах WordPress


/**
 * Пример использования шорткода в теме WordPress.
 * 
 * В данном примере используется шорткод [my_theme_shortcode].
 * 
 * @return string Текст с примененным шорткодом.
 */
function apply_theme_shortcode() {
    $content = do_shortcode( '[my_theme_shortcode]' );
    
    return $content;
}

Интеграция шорткодов с плагинами и расширениями


/**
 * Пример интеграции шорткода с плагином.
 * 
 * В данном примере используется шорткод [my_plugin_shortcode].
 * 
 * @return string Текст с примененным шорткодом.
 */
function apply_plugin_shortcode() {
    $content = do_shortcode( '[my_plugin_shortcode]' );
    
    return $content;
}

Вопросы и ответы

Как использовать do_shortcode() для поиска и фильтрации шорткодов в контенте?

Функция do_shortcode() в WordPress позволяет искать и фильтровать шорткоды в контенте. Она принимает два параметра: $content (обязательный) и $ignore_html (необязательный).

Чтобы использовать do_shortcode(), передайте ей контент, в котором нужно найти шорткоды. Например:

$content = 'Пример [shortcode] контента с шорткодом.';
$result = do_shortcode( $content );

В результате выполнения функции do_shortcode() в переменной $result будет содержаться контент без шорткодов.

Как работает параметр $ignore_html в функции do_shortcode()?

Параметр $ignore_html в функции do_shortcode() определяет, нужно ли пропускать шорткоды, находящиеся внутри HTML-элементов. По умолчанию он равен false.

Если вы хотите пропустить шорткоды внутри HTML-элементов, установите значение true. Например:

$content = 'Пример [shortcode] контента с <div>шорткодом</div>.';
$result = do_shortcode( $content, true );

В этом случае, шорткод внутри тега <div> будет проигнорирован и не будет заменен на соответствующий контент.

Какие типы шорткодов поддерживает функция do_shortcode()?

Функция do_shortcode() поддерживает все типы шорткодов, определенные в WordPress. Это могут быть стандартные шорткоды, такие как [gallery] или [caption], а также пользовательские шорткоды, добавленные с помощью плагинов или в теме.

Пример использования do_shortcode() с пользовательским шорткодом:

$content = 'Пример [my_custom_shortcode] контента с пользовательским шорткодом.';
$result = do_shortcode( $content );

Функция do_shortcode() найдет и обработает шорткод [my_custom_shortcode], заменив его на соответствующий контент.

Как добавить свои собственные шорткоды и их обработчики в WordPress?

Чтобы добавить свои собственные шорткоды в WordPress, вам нужно использовать функцию add_shortcode(). Она принимает два параметра: имя шорткода и функцию-обработчик.

Пример добавления пользовательского шорткода:

function my_custom_shortcode_handler( $atts ) {
    // Обработка шорткода и возврат соответствующего контента
}
add_shortcode( 'my_custom_shortcode', 'my_custom_shortcode_handler' );

После добавления шорткода с помощью add_shortcode(), вы можете использовать его в контенте и обрабатывать с помощью do_shortcode().

Как обрабатывать шорткоды внутри других шорткодов с помощью do_shortcode()?

Функция do_shortcode() в WordPress позволяет обрабатывать шорткоды, включая вложенные шорткоды, внутри контента. Это особенно полезно, когда вам нужно использовать результат одного шорткода внутри другого.


$content = '[shortcode1][shortcode2][/shortcode2][/shortcode1]';
$result = do_shortcode($content);

В этом примере функция do_shortcode() обрабатывает вложенные шорткоды [shortcode2] внутри шорткода [shortcode1]. Результат будет содержать обработанный контент с замененными шорткодами.

Как обрабатывать шорткоды только в определенных областях контента с помощью do_shortcode()?

Если вам нужно обработать шорткоды только в определенных областях контента, вы можете использовать функцию do_shortcode() совместно с функцией apply_filters().


$content = 'Some text [shortcode] Some more text';
$filtered_content = apply_filters('the_content', $content);
$result = do_shortcode($filtered_content);

В этом примере функция apply_filters() применяет фильтр the_content к контенту, который содержит шорткоды. Затем функция do_shortcode() обрабатывает контент с примененными фильтрами и возвращает результат без шорткодов.

Как обрабатывать шорткоды, которые возвращают HTML-код с помощью do_shortcode()?

Функция do_shortcode() также может обрабатывать шорткоды, которые возвращают HTML-код. В этом случае, вы можете использовать функцию ob_start() и ob_get_clean() для захвата и возврата HTML-кода.


function custom_shortcode() {
    ob_start();
    // Generate HTML code
    $html = '<div>Some HTML code</div>';
    echo $html;
    return ob_get_clean();
}
add_shortcode('custom', 'custom_shortcode');
$content = 'Some text [custom] Some more text';
$result = do_shortcode($content);

В этом примере функция custom_shortcode() генерирует HTML-код и использует ob_start() для его захвата. Затем HTML-код возвращается с помощью ob_get_clean(). Функция do_shortcode() обрабатывает контент и заменяет шорткоды на сгенерированный HTML-код.

Как обрабатывать шорткоды, которые возвращают динамический контент с помощью do_shortcode()?

Если вам нужно обработать шорткоды, которые возвращают динамический контент, вы можете использовать функцию do_shortcode() внутри цикла или другого кода, который генерирует динамический контент.


function dynamic_shortcode() {
    // Generate dynamic content
    $content = '';
    for ($i = 1; $i <= 5; $i++) {
        $content .= '<p>Dynamic content ' . $i . '</p>';
    }
    return $content;
}
add_shortcode('dynamic', 'dynamic_shortcode');
$content = '[dynamic]';
$result = do_shortcode($content);

В этом примере функция dynamic_shortcode() генерирует динамический контент внутри цикла. Шорткод [dynamic] заменяется на сгенерированный контент с помощью функции do_shortcode().

Функция do_shortcode() в WordPress является мощным инструментом для обработки шорткодов в контенте. Она позволяет обрабатывать вложенные шорткоды, применять фильтры к контенту и работать с шорткодами, возвращающими HTML-код или динамический контент. Это делает ее незаменимым инструментом для WEB-разработчиков WordPress, позволяющим создавать гибкие и динамичные сайты.

Связанные элементы

  • Функция add_shortcode(): регистрирует новый шорткод.
  • Функция remove_shortcode(): удаляет зарегистрированный шорткод.
  • Функция shortcode_atts(): объединяет атрибуты шорткода с значениями по умолчанию.
  • Функция shortcode_parse_atts(): разбирает строку атрибутов шорткода и возвращает массив.
  • Функция shortcode_exists(): проверяет, зарегистрирован ли указанный шорткод.
  • Функция has_shortcode(): проверяет, содержит ли указанный контент шорткод.
  • Хук do_shortcode_tag: вызывается при обработке каждого шорткода.
Обсуждение