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. |