WordPress как на ладони
wordpress jino

has_shortcode() WP 3.6

Проверяет есть ли в переданном тексте указанный шоткод.

Шоткод должен быть зарегистрирован через функцию add_shotrcode(), чтобы он был узнаваем.

Используется в: 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. Проверим есть ли в записи галереи

$content = 'Это какой-либо текст, (возможно переданный через $post->post_content).
Он содержит шоткод: [gallery].';

if( has_shortcode( $content, 'gallery' ) ) {
	// [ gallery] есть в переданном тексте.
}

#2. Выборочное подключение скрипта, на основе наличия шоткода в тексте

Подключим нужный нам 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');
	}
}

Код has shortcode: wp-includes/shortcodes.php WP 4.8.2

<?php
function has_shortcode( $content, $tag ) {
	if ( false === strpos( $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;
}

Cвязанные функции

Из метки: shortcode (шоткод шорткод)

Еще из метки: Условные теги (все)

Еще из раздела: Шоткоды

Danya 50
Программист фрилансер. Кодингом на PHP занимаю с 2008 года.
has_shortcode 5 комментариев
  • campusboy1847 cайт: wp-plus.ru

    А как обстоят дела с шорткодами с параметрами? CF7 добавляет на все страницы пару своих скриптов, хочу отменить их загрузку, кроме страницы контактов.

    Ответить1.7 года назад #
    • Kama4464

      Надо в плагине смотреть как там это работает. Я им не пользуюсь... Если везде добавляет, значит в обход шорткода подключается.

      Ответить1.7 года назад #
  • Привет!
    Подскажите, а можно ли как-то считать параметры шорткода из контента?
    Поясню: мне нужно проверить наличие шорткода и узнать его параметры

    Ответить2 месяца назад #

Здравствуйте, !

Ваш комментарий