Я тут накатал несколько плагинов для своего сайта. Пытаюсь сделать так, чтобы стили и скрипты для этих плагинов загружались на фронт-энде только если плагин используется на странице. Я удивлён, что такой системы нет в Wordpress из коробки, так что она скорее всего есть, просто это я слепой. Подскажите как это правильно реализовать? Пока что я накатал какой-то дикий быдло-код. Наверняка, это можно сделать проще. PHP: function get_page_raw_content() { if (is_singular()) { global $wp_query; $post_id = $wp_query->get_queried_object_id(); $mypost = get_post($post_id); if (has_shortcode( $mypost->post_content,'el_tables')) { el_tables_scripts(); } } } add_action('wp_enqueue_scripts', 'get_page_raw_content');
Пояснялочка. Самое очевидное решение это подрубать скрипты и стили в самой функции шордкода. PHP: function el_tables($data) { el_tables_scripts(); } add_shortcode('el_tables', 'el_tables'); Но я так никогда делаю потому что эта функция стреляет уже когда <head> вывелся на страницу. В итоге внутри этой функции мы не можем запустить add_action('wp_enqueue_scripts', 'el_tables_scripts'), а стили со скриптами падают в конец <body>, что приводит к "дрыганью стилей" в момент прогрузки страницы. Поэтому, я искал способ привязаться к хуку wp_enqueue_scripts, чтобы вывести всё в <head>. Когда стреляет этот хук, то у нас пока нет содержимого страницы и мы не можем проверить, используется ли на ней шордкод (вордпресс писали конченные люди). Поэтому, я сам вытаскиваю содержимое, проверяю есть ли там шордкод, и если есть, то подключаю стили в <head>.
Ага, в вордпрессе всё-таки нет такого механизма... Единственную нормальную инфу по этому вопросу написал этот человек. Остальные либо дропают свои стили в конец <body>, что вообще не валидно, либо пишут такой же быдло-код как у меня, с проверкой содержимого страницы на наличие шордкода. При этом они по-моему даже не вдупляют, что этот код у них выполняется несколько раз перед первым хуком (для каждого плагина). Короче... Вордпресс - говно. Буду пробовать написать плагин, который делает отложенный вывод, чтобы содержимое страницы не выплёвывалось сразу, а собиралось в переменную, с которой можно работать. Если это окажется невозможным, не натоптав в коде самой CMS немытыми ногами, то есть план Б - плагин, который всегда загружается первым, вытаскивает содержимое страницы единожды и пишет его в константу. Дальше во всех моих плагинах можно будет делать проверку есть ли в этой константе шордкод, и если есть - подключать стили.