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 VER 4.9.1

<?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 6 комментариев

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

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