get_shortcode_regex()
Повертає регулярний вираз, який використовується для пошуку шоткодів у тексті.
Ця функція поєднує всі зареєстровані теги шоткодів в один регулярний вираз.
1 раз – 0.000015 сек
(дуже швидко) | 50000 разів – 0.07 сек
(швидкість світла) |
PHP 7.0.8, WP 4.6.1
(дуже швидко) | 50000 разів – 0.07 сек
(швидкість світла) |
PHP 7.0.8, WP 4.6.1
Хуків немає.
Повертає
Строку
. Регулярний вираз.
Використання
$ pattern = get_shortcode_regex ($ tagnames);
-
$tagnames
(масив) (WP 4.4) -
Список шорткодів, які потрібно знайти.
Типово: null (усі зареєстровані шорткоди)
Приклади
#1 Що повертає функція
echo get_shortcode_regex(); // виведе приблизно такий рядок, що залежить від зареєстрованих шоткодів // [([?)(embed|wp_caption|caption|gallery|playlist|audio|video)(?![w-])([^]/]*(?:/(?!) ])[^]/]*)*?)(?:(/)]|](?:([^[]*+(?:[(?!/]) )[^[]*+)*+)[/])?)(]?)
Цей приклад показує, що функція поверне, якщо використовувати параметр $tagnames.
echo get_shortcode_regex(array('mytag')); //> [([?)(mytag)(?![w-])([^]/]*(?:/(?!])[^]/]* )*?)(?:(/)]|](?:([^[]*+(?:[(?!/])][^[]*+)*+ )[/])?)(]?)
#2 Перевіримо, чи використовується в пості потрібний шоткод
Перевіримо наявність у тексті шоткода your-shortcode
і зробимо щось якщо використовується:
add_action( 'wp', 'your_prefix_detect_shortcode'); function your_prefix_detect_shortcode(){ global $post; $ pattern = get_shortcode_regex(); if ( preg_match_all( '/'. $pattern .'/s', $post->post_content, $matches ) && array_key_exists( 2, $matches ) && in_array( 'your-shortcode', $matches[2] ) ) { // Шоткод використовується } }
Цей приклад працюватиме, якщо глобальна змінна $post визначена. wp
– рання дія, коли ми може це визначити.
Для перевірки наявності шоткоду також є спеціальна функція has_shortcode()
#3 Перевірка наявності шоткоду в тексті кількох постів
Цей приклад дуже схожий на попередній, з тією різницею, що він дозволяє перевірити всі пости на наявність у їх контенті потрібного нам шоткода videoannotation
:
add_action( 'wp', 'your_prefix_detect_shortcode'); function your_prefix_detect_shortcode(){ global $wp_query; $posts = $wp_query->posts; $ pattern = get_shortcode_regex(); foreach ( $posts as $post ){ if ( preg_match_all( '/'. $pattern .'/s', $post->post_content, $matches ) && array_key_exists( 2, $matches ) && in_array( 'videoannotation', $matches[2] ) ) { // підключаємо свій сss та js break; // визначили що потрібно підключати стилі та гарний... } } }
нотатки
- Global. Масив. $shortcode_tags
список змін
З версії 2.5.0 | Введено. |
З версії 4.4.0 | Added the $tagnames parameter. |