Intereting Posts
Видео фона – (php & css) – генерирование ошибки 404 при загрузке страницы – Справка по структуре файла WordPress Установка плагина (который уже загружен вручную) Отметьте страницу запрошенного меню как активного Как проверить, отличается ли строка PHP от мета-поля? Кажется, что wp_schedule_event добавляется дважды Как получить shortcode для работы внутри цикла foreach, вызванного в рамках короткого кода? Невозможно импортировать сообщения в многопользовательские Отфильтровать собственные сообщения с комментариями / без комментариев Хранение меню администратора (левая сторона в панели управления) Содержимое сообщений добавляется с заголовком, а не содержимым, используя the_excerpt () Почему wp_get_attachment_image_src не работает с моим пользовательским размером (add_image_size) Скрытые страницы, сообщения и плагины Ошибка допустимого размера памяти в WordPress Pagination не работает с WP_QUERY wordpress custom loop по возрастанию по убыванию сообщений по настраиваемому полю

Проверка короткого кода «gallery» с использованием strpos всегда возвращает false

Я хочу, чтобы условно поставить в очередь скрипт и таблицу стилей в зависимости от того, используется ли shortcode в сообщениях. Вот как я это делаю ( на основе ):

 function doraemon_scripts() { if( is_single() ) { if (strpos($post->post_content,'[gallery') === false){ } else { wp_enqueue_style( ... ); wp_enqueue_script( ... ); } } } add_action( 'wp_enqueue_scripts', 'doraemon_scripts' ); 

Но проблема в том, что таблица стилей и сценарий не помещаются в очередь, поскольку, кажется, strpos всегда возвращает false. Что я могу делать неправильно?

Solutions Collecting From Web of "Проверка короткого кода «gallery» с использованием strpos всегда возвращает false"

Вам понадобится global $post чтобы получить переменную $post в объеме этой функции.

 function doraemon_scripts() { if( is_single() ) { global $post; if (strpos($post->post_content,'[gallery') === false){ } else { // wp_enqueue_style( ... ); // wp_enqueue_script( ... ); } } } add_action( 'wp_enqueue_scripts', 'doraemon_scripts' ); 

Использование $post global вне Loop не всегда надежное, но WordPress установит эту переменную на первое сообщение в результирующем наборе, которое будет правильным сообщением на отдельных страницах сообщений, но не будет правильным на других страницах.

Конечно, это не сработает, если что-то изменило глобальное, и вы не всегда можете предсказать, что будет делать плагин и где.

Вы можете быть более безопасным, используя …

 global $wp_query; $post = $wp_query->posts[0];