WordPress как на ладони
rgbcode is looking for WordPress developers.

has_shortcode()WP 3.6.0

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

Шоткод должен быть зарегистрирован через функцию 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

#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');
	}
}
0

#2 Проверим есть ли в записи галереи

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

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

Заметки

  • Global. Массив. $shortcode_tags

Список изменений

С версии 3.6.0 Введена.

Код has_shortcode() WP 6.4.3

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;
}
Danya 50
Программист фрилансер. Кодингом на PHP занимаю с 2008 года.
Редакторы: Kama 9600, campusboy 4737
  • Lb-total.ru

    Ремкомплект ручек холодильников liebherr lb-total.ru.

    lb-total.ru

2 комментария
    Войти