has_shortcode()
Проверяет есть ли в переданном тексте указанный шоткод.
Шоткод должен быть зарегистрирован через функцию add_shotrcode(), чтобы он был узнаваем для WordPress.
Основа для: get_post_galleries()
1 раз — 0.000014 сек (очень быстро) | 50000 раз — 0.03 сек (скорость света) | PHP 7.0.8, WP 4.6.1
Хуков нет.
Возвращает
true|false. Найден шоткод в тексте или нет.
Использование
if ( has_shortcode( $content, $tag ) ) {
}
- $content(строка) (обязательный)
- Текст, который нужно проверить.
- $tag(строка) (обязательный)
- Название шоткода, который нужно найти в тексте.
Примеры
#1 Выборочное подключение скрипта, на основе наличия шоткода в тексте
Подключим нужный нам javascript (custom-script) только если в тексте найден нужный нам шоткод gallery:
add_action( 'wp_enqueue_scripts', 'custom_shortcode_scripts');
function custom_shortcode_scripts() {
global $post;
if( has_shortcode( $post->post_content, 'gallery') ) {
wp_enqueue_script( 'custom-script');
}
} #2 Проверим есть ли в записи галереи
$content = 'Это какой-либо текст, (возможно переданный через $post->post_content).
Он содержит шоткод: [gallery].';
if( has_shortcode( $content, 'gallery' ) ) {
// [gallery] есть в переданном тексте.
}
Заметки
- Global. Массив.
$shortcode_tags
Список изменений
| С версии 3.6.0 | Введена. |
Код has_shortcode() has shortcode WP 6.9.4
function has_shortcode( $content, $tag ) {
if ( ! str_contains( $content, '[' ) ) {
return false;
}
if ( shortcode_exists( $tag ) ) {
preg_match_all( '/' . get_shortcode_regex() . '/', $content, $matches, PREG_SET_ORDER );
if ( empty( $matches ) ) {
return false;
}
foreach ( $matches as $shortcode ) {
if ( $tag === $shortcode[2] ) {
return true;
} elseif ( ! empty( $shortcode[5] ) && has_shortcode( $shortcode[5], $tag ) ) {
return true;
}
}
}
return false;
}