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
(рядок) (обов’язковий)
Назва шоткода, який потрібно знайти у тексті.

Приклади

0

#1 Перевіримо чи є у записі галереї

$content = 'Це якийсь текст, (можливо переданий через $post->post_content).
Він містить шоткод: .';

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

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

нотатки

  • Global. Масив. $shortcode_tags

список змін

З версії 3.6.0Введено.

Код has_shortcode() WP 6.0.2

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;
}

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *