- Описание функции
- Примеры использования
- Добавление нового шорткода
- Использование атрибутов в шорткоде
- Обработка содержимого шорткода
- Передача тега шорткода в функцию
- Вопросы и ответы
- Как создать новый шорткод?
- Как передать атрибуты в шорткод?
- Как получить содержимое шорткода?
- Как получить имя шорткода внутри функции обратного вызова?
- Как использовать шорткод внутри другого шорткода?
- Как проверить, существует ли шорткод с определенным тегом?
- Как удалить существующий шорткод?
- Как изменить порядок выполнения шорткодов на странице?
- Связанные элементы
Описание функции
Функция add_shortcode() добавляет новый шорткод в WordPress. Шорткод — это специальная конструкция, которая позволяет вставлять динамический контент или функциональность в посты, страницы или другие места на сайте. При использовании шорткода, WordPress автоматически вызывает соответствующую функцию обратного вызова (callback), которую мы указываем при регистрации шорткода.
Использование
add_shortcode( string $tag, callable $callback ) В данном примере мы используем функцию add_shortcode() для добавления нового шорткода. Мы передаем два параметра: $tag — строка, обязательный параметр, указывает тег шорткода, который будет искаться в контенте поста, и $callback — функция обратного вызова, которая будет выполняться при обнаружении шорткода.
$tag(string) — Обязательный. Тег шорткода, который будет искаться в контенте поста.$callback(callable) — Обязательный. Функция обратного вызова, которая будет выполняться при обнаружении шорткода. По умолчанию, функция обратного вызова принимает три параметра: массив атрибутов ($atts), содержимое шорткода илиnull, если оно не указано ($content), и сам тег шорткода ($shortcode_tag), в указанном порядке.
<?php
// Функция обратного вызова для шорткода [my_shortcode]
function my_shortcode_callback( $atts, $content, $shortcode_tag ) {
// Обработка атрибутов шорткода
$atts = shortcode_atts( array(
'attr1' => 'default value',
'attr2' => 'default value',
), $atts );
// Вывод содержимого шорткода
$output = 'Атрибут 1: ' . $atts['attr1'] . '<br>';
$output .= 'Атрибут 2: ' . $atts['attr2'] . '<br>';
$output .= 'Содержимое шорткода: ' . $content;
return $output;
}
// Регистрация шорткода [my_shortcode]
add_shortcode( 'my_shortcode', 'my_shortcode_callback' );
?> В этом примере мы создаем новый шорткод с тегом [my_shortcode]. При использовании этого шорткода, WordPress будет вызывать функцию my_shortcode_callback() в качестве функции обратного вызова. Внутри этой функции мы обрабатываем атрибуты шорткода с помощью функции shortcode_atts() и выводим содержимое шорткода в соответствии с заданным форматом. Затем мы возвращаем полученный результат.
Примеры использования
Добавление нового шорткода
add_shortcode( 'hello', 'hello_shortcode' );
function hello_shortcode() {
return 'Hello, world!';
}
В этом примере мы добавляем новый шорткод с тегом ‘hello’ и функцией обратного вызова ‘hello_shortcode’. Когда шорткод [hello] будет найден в содержимом записи, функция ‘hello_shortcode’ будет вызвана и вернет строку ‘Hello, world!’.
Использование атрибутов в шорткоде
add_shortcode( 'greeting', 'greeting_shortcode' );
function greeting_shortcode( $atts ) {
$atts = shortcode_atts( array(
'name' => 'Guest',
), $atts );
return 'Hello, ' . $atts['name'] . '!';
}
В этом примере мы добавляем новый шорткод с тегом ‘greeting’ и функцией обратного вызова ‘greeting_shortcode’. Функция ‘greeting_shortcode’ принимает массив атрибутов ($atts), который содержит значения, переданные в шорткоде. Мы используем функцию ‘shortcode_atts’ для объединения переданных атрибутов со значениями по умолчанию. Затем мы возвращаем приветствие с использованием значения атрибута ‘name’ или значения по умолчанию, если атрибут не указан.
Обработка содержимого шорткода
add_shortcode( 'uppercase', 'uppercase_shortcode' );
function uppercase_shortcode( $atts, $content = null ) {
if ( $content ) {
return strtoupper( $content );
}
}
В этом примере мы добавляем новый шорткод с тегом ‘uppercase’ и функцией обратного вызова ‘uppercase_shortcode’. Функция ‘uppercase_shortcode’ принимает массив атрибутов ($atts) и содержимое шорткода ($content). Если содержимое шорткода передано, мы возвращаем его в верхнем регистре с помощью функции ‘strtoupper’. Если содержимое шорткода не указано, ничего не возвращаем.
Передача тега шорткода в функцию
add_shortcode( 'current_shortcode', 'current_shortcode' );
function current_shortcode( $atts, $content = null, $shortcode_tag ) {
return 'This shortcode is: ' . $shortcode_tag;
}
В этом примере мы добавляем новый шорткод с тегом ‘current_shortcode’ и функцией обратного вызова ‘current_shortcode’. Функция ‘current_shortcode’ принимает массив атрибутов ($atts), содержимое шорткода ($content) и тег шорткода ($shortcode_tag). Мы возвращаем строку, содержащую информацию о текущем теге шорткода.
Вопросы и ответы
Как создать новый шорткод?
Для создания нового шорткода в WordPress используется функция add_shortcode(). Она принимает два обязательных параметра: $tag (строка) и $callback (функция обратного вызова).
Первый параметр $tag представляет собой тег шорткода, который будет искаться в содержимом поста. Это может быть любая строка, например, «my_shortcode».
Второй параметр $callback — это функция, которая будет выполняться, когда шорткод будет найден. Функция обратного вызова должна быть определена заранее и принимать три параметра по умолчанию: массив атрибутов ($atts), содержимое шорткода или null, если оно не задано ($content), и имя шорткода ($shortcode_tag).
function my_shortcode_callback($atts, $content, $shortcode_tag) {
// Ваш код обработки шорткода здесь
}
add_shortcode('my_shortcode', 'my_shortcode_callback');
Как передать атрибуты в шорткод?
Атрибуты шорткода могут быть переданы в функцию обратного вызова через массив $atts. Этот массив содержит пары ключ-значение, где ключ — это имя атрибута, а значение — его значение.
Например, если у вас есть шорткод [my_shortcode name="John" age="30"], то в функции обратного вызова вы можете получить значения атрибутов следующим образом:
function my_shortcode_callback($atts, $content, $shortcode_tag) {
$name = $atts['name']; // "John"
$age = $atts['age']; // "30"
// Ваш код обработки шорткода здесь
}
add_shortcode('my_shortcode', 'my_shortcode_callback');
Как получить содержимое шорткода?
Содержимое шорткода может быть получено в функции обратного вызова через параметр $content. Если содержимое шорткода не задано, то значение этого параметра будет равно null.
Например, если у вас есть шорткод [my_shortcode]Hello World![/my_shortcode], то в функции обратного вызова вы можете получить содержимое следующим образом:
function my_shortcode_callback($atts, $content, $shortcode_tag) {
$content; // "Hello World!"
// Ваш код обработки шорткода здесь
}
add_shortcode('my_shortcode', 'my_shortcode_callback');
Как получить имя шорткода внутри функции обратного вызова?
Имя шорткода может быть получено в функции обратного вызова через параметр $shortcode_tag.
Например, если у вас есть шорткод [my_shortcode], то в функции обратного вызова вы можете получить имя шорткода следующим образом:
function my_shortcode_callback($atts, $content, $shortcode_tag) {
$shortcode_tag; // "my_shortcode"
// Ваш код обработки шорткода здесь
}
add_shortcode('my_shortcode', 'my_shortcode_callback');
Как использовать шорткод внутри другого шорткода?
Функция add_shortcode() в WordPress позволяет создавать и использовать шорткоды для удобного и быстрого добавления дополнительного функционала на страницы или записи сайта. Иногда возникает необходимость использовать один шорткод внутри другого. В таком случае, нужно учитывать порядок выполнения шорткодов.
Для того чтобы использовать шорткод внутри другого шорткода, необходимо убедиться, что второй шорткод будет обработан после первого. Для этого можно воспользоваться фильтром do_shortcode_tag.
// Первый шорткод
function first_shortcode_callback( $atts ) {
// Код обработки первого шорткода
}
add_shortcode( 'first_shortcode', 'first_shortcode_callback' );
// Второй шорткод
function second_shortcode_callback( $atts ) {
// Код обработки второго шорткода
$content = do_shortcode( $atts['content'] ); // Обработка вложенного шорткода
return $content;
}
add_shortcode( 'second_shortcode', 'second_shortcode_callback' );
// Использование вложенных шорткодов
echo do_shortcode( '[second_shortcode]Some text [first_shortcode][/second_shortcode]' ); Как проверить, существует ли шорткод с определенным тегом?
Иногда возникает необходимость проверить, существует ли шорткод с определенным тегом, перед его использованием. Для этого можно воспользоваться функцией shortcode_exists().
// Проверка существования шорткода
if ( shortcode_exists( 'my_shortcode' ) ) {
// Код, выполняемый при наличии шорткода
} Как удалить существующий шорткод?
Иногда возникает необходимость удалить существующий шорткод, например, при разработке плагина или темы. Для этого можно воспользоваться функцией remove_shortcode().
// Удаление существующего шорткода
remove_shortcode( 'my_shortcode' ); Как изменить порядок выполнения шорткодов на странице?
По умолчанию, шорткоды выполняются в порядке их обнаружения на странице. Иногда возникает необходимость изменить порядок выполнения шорткодов. Для этого можно воспользоваться фильтром do_shortcode_tag.
// Изменение порядка выполнения шорткодов
function custom_shortcode_order( $tags ) {
$tags = array_reverse( $tags ); // Изменение порядка выполнения шорткодов
return $tags;
}
add_filter( 'do_shortcode_tag', 'custom_shortcode_order' ); Функция
add_shortcode()в WordPress предоставляет удобный способ добавления новых шорткодов на страницы или записи сайта. Она позволяет использовать шорткоды внутри других шорткодов, проверять и удалять существующие шорткоды, а также изменять порядок выполнения шорткодов на странице. Это значительно расширяет возможности разработчиков и позволяет создавать более гибкий и функциональный контент для пользователей.
Связанные элементы
- Функция
do_shortcode(): выполняет шорткоды в тексте. - Функция
remove_shortcode(): удаляет зарегистрированный шорткод. - Функция
shortcode_atts(): объединяет атрибуты шорткода с значениями по умолчанию. - Хук
shortcode_atts_{$shortcode}: вызывается при объединении атрибутов шорткода. - Хук
widget_text_content: вызывается при выводе текстового виджета. - Класс
WP_Embed: предоставляет методы для встраивания контента. - Класс
WP_Http: обеспечивает отправку HTTP-запросов. - Класс
WP_Widget: базовый класс для создания виджетов.