get_shortcode_regex() WP 2.5.1
Возвращает регулярное выражение которое используется для поиска шоткодов в тексте.
Эта функция объединяет все зарегистрированные теги шоткодов в одно регулярное выражение.
✈ 1 раз = 0.000015с = очень быстро | 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|code_snippet|democracy|democracy_archives|download)(?![\w-])([^\]\/]*(?:\/(?!\])[^\]\/]*)*?)(?:(\/)\]|\](?:([^\[]*+(?:\[(?!\/\2\])[^\[]*+)*+)\[\/\2\])?)(\]?)
#2 Указываем нужных шоткод
Этот пример показывает, что вернет функция, если использовать параметр $tagnames.
echo get_shortcode_regex( array('mytag') ); //> \[(\[?)(mytag)(?![\w-])([^\]\/]*(?:\/(?!\])[^\]\/]*)*?)(?:(\/)\]|\](?:([^\[]*+(?:\[(?!\/\2\])[^\[]*+)*+)\[\/\2\])?)(\]?)
#3. Проверим используется ли в посте нужный шоткод
Проверим наличие в тексе шоткода 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()
#4. Проверка наличия шоткода в тексте нескольких постов
Этот пример очень похож на предыдущий, с той лишь разницей, что он позволяет проверить все посты на наличие в их контенте нужного нам шоткода 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; // определили что нужно подключать стили и хорош... } } }
Код get shortcode regex:
wp-includes/shortcodes.php
VER 4.9.5
Cвязанные функции
Из раздела: Шорткоды
