Intereting Posts
Показывать только детей и внуков определенной должности в админ Отключить создание папок в течение нескольких лет и месяцев в папке uploads Добавить категорию в пользовательский URL-адрес Как разбивать Ajax результат Как я могу установить таксономию программно Многостраничные сообщения не индексируются Google из-за канонических URL-адресов Имейте пользовательские параметры столбчатой ​​страницы типа таксономии, а не сообщения Проблема WordPress при загрузке новых носителей: Файл пуст. Загрузите что-то более существенное Отключить журнал отладки программно Как сделать страницы тегов выглядеть как / tags /% tagname% / в URL? Дополнительный текст в URL-адресе Ошибка: вызов функции-члена get_error_code () для не-объекта Почему номер телефона является гиперссылкой на настольных сайтах, в моем виджете? Ссылка категории по умолчанию для настраиваемой категории – это неработающая ссылка Создание эскизов, таких как 500px.com

Как включить код только на определенные страницы?

Я узнаю о плагинах и коротких кодах. Я заметил, что когда я активирую свой плагин, его код загружается на все мои страницы – даже страницы, у которых нет моего короткого кода. (Я не имею в виду контент против страниц администратора). На некоторых контентных страницах я использую специальный код и на других страницах контента, но не в любом случае, загружается код плагина. Как это сделать, чтобы плагин был включен только на страницах, где используется короткий код?

Более детально:

Предположим, у меня есть плагин, который делает лайтбокс. Я активирую плагин. На моей странице «Прохладные изображения» я использую shortcode для создания лайтбокса. Когда я проверяю View Source на моей странице «О программе», которая не использует короткий код лайтбокса, я вижу, что код плагина Lightbox был загружен. Мои страницы будут загружаться быстрее, если я напишу свой плагин, чтобы его код загружался только на тех страницах, где это необходимо. Это возможно? В противном случае у меня будет код для большого количества плагинов, загруженных на страницы без необходимости. Есть идеи?

WP v3.3 дал нам возможность запускать wp_enqueue_script в середине страницы. Билет 9346

Это значительно упростило включение вашего JS с лучшей детализацией (по крайней мере, при использовании коротких кодов). Здесь jquery будет включен только в том случае, если наш короткий код запущен.

function get_slideshow() { // Do some stuff... // Load up scripts right from within our shortcode function (requires WP 3.3+) wp_enqueue_script( 'jquery', array(), null, true ); return; } add_shortcode( 'cool_slideshow', 'get_slideshow' ); 

Проверьте переменные пользовательского интерфейса администратора

Один элемент меню – это особый случай: Комментарии, поскольку они регистрируются с помощью API-интерфейса add_WHATEVER_(submenu)page() .

 // All need to be stated as beeing global global $pagenow, $typenow, $hook_suffix, $parent_file, $submenu_file, $post_type_object; if ( 'THE-OUTPUT.php' === $WHATEVER_YOU_CHOOSE_TO_CHECK ) // do stuff 

Они несовместимы и жестко закодированы в ядро ​​wp. Обратите внимание, что не все установлены на всех страницах.

Захват пользовательских интерфейсов администратора страницы

Тогда есть специальные специальные admin-footer.php страницы, которые вы можете посмотреть в admin-footer.php и admin-header.php :

 // Examples: // Header "admin_head-$hook_suffix" "admin_print_styles-$hook_suffix" "admin_print_scripts-$hook_suffix" // Footer "admin_footer-$hook_suffix" 

Некоторые примеры в реальном мире: экран сообщений

 // Examples how the result looks like admin_print_styles-post.php admin_print_styles-post-new.php 

Тогда есть также $hook_suffix который вы можете проверить для сценариев очереди, прямо, когда вы подключаете свое действие:

 do_action( 'admin_enqueue_scripts', $hook_suffix ); 

Обновить

Чтобы получить доступ к этим данным / информации (1 клик), мы создали свободно доступный плагин с поддержкой разработчиков с именем «(WCM)« Текущая информация администратора » , который доступен в GitHub . Плагин можно в ближайшем будущем также найти в официальном репозитории wp.org .

Экранные снимки

Чтобы дать предварительный просмотр того, что вы получаете с этим плагином:

экран

Крючки

Глобалы

Может делать что-то по строкам (в header.php):

 <?php if ( have_posts() && ( is_page() || is_single() ) ) { $content = get_the_content(the_post()); if ( stripos( $content , '[your-shortcode') ) { function_for_scripts(); } } ?> 

Проверяет, является ли текущая загрузка страницей или почтой, затем захватывает содержимое и выполняет поиск вашего короткого кода. Найдя его, он выполняет вашу функцию.

Самый простой способ – просто проверить короткий код.

 function your_scripts() { global $post; wp_register_script('your-script',$the_path_to_your_script,'0.1',true); if ( strstr( $post->post_content, '[your-shortcode' ) ) { wp_enqueue_script('your-script'); } } add_action( 'wp_enqueue_scripts', 'your_scripts'); 

@kaiser отметил get_shortcode_regex() несколько раз в этом потоке, я просто подумал, что приведу пример о том, как его использовать. Код в значительной степени взят с get_shortcode_regex() WordPress Code.

 function enqueue_script_if_shortcode_is_detected() { global $post; wp_register_script( 'your-script', $the_path_to_your_script, '1.0', true ); $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] ) ) { wp_enqueue_script('your-script'); } } add_action( 'wp_enqueue_scripts', 'enqueue_script_if_shortcode_is_detected' ); 

Я нашел это решение :

 add_action( 'wp_print_scripts', 'my_deregister_javascript', 100 ); function my_deregister_javascript() { wp_deregister_script( 'my_scripts_handle' ); }