Intereting Posts
Как сделать str_replace с тегом шаблона? удалить постоянную ссылку «передняя часть» для пользовательского типа сообщения Как очистить кеш без плагина Должен ли я хранить внешние данные API в моей базе данных WP или сохранять его как переходный? Как будет продолжаться, если я просто хочу временную функцию? Как перевести форму контакта 7 с помощью qTranslate? wp_usermeta wp_usersettings Я хочу, чтобы мое пользовательское поле использовало HTML, как мне это сделать? Обновление привело к тому, что сайт моего клиента не существовал после того, как новое обновление WordPress Не удается получить доступ к wp-admin Как заставить всех пользователей использовать возможности роли автора? oEmbed не работает для комментариев Что может привести к тому, что страница параметров / настроек моего плагина не будет загружена? Образец URL-адреса WordPress перенаправляется на главную страницу Получить заголовок блога с помощью REST v2

Анонимная функция выполняется дважды в wp_head при добавлении из фильтра the_posts?

Я знаю, что это звучит сложно, так что несите меня.

Я пытаюсь добавить определенные пользовательские стили CSS, основанные на коротких кодах (если есть) в текущей почте / странице.

function load_shortcode_styles($posts){ //function to check short codes here //regex to get id from shortcode(eg [item id=""] ) //get custom post meta from the id that has my custom css add_action('wp_head', create_function('', 'echo "\n<!-- my style -->\n<style>' . $custom_css . '</style>\n";') ); } add_filter('the_posts', 'load_shortcode_styles' ); 

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

 <!-- my style --> <style> </style> <!-- my style --> <style> </style> 

Для целей тестирования я использовал жестко запрограммированную функцию для эха определенной строки, и она отлично работает.

например:

 function test_print(){ echo "\n<!-- my style -->\n<style>foo bar</style>\n"; } 

и замените выше крючок действия с этим

 add_action('wp_head', 'test_print' ); 

Так или иначе, это напечатает, что является правильным!

 <!-- my style --> <style> foo bar </style> 

Кто-нибудь знает об этой проблеме? Как я могу это решить?

Solutions Collecting From Web of "Анонимная функция выполняется дважды в wp_head при добавлении из фильтра the_posts?"

Я могу только предположить, что на странице есть либо несколько запросов, либо экземпляры этого сообщения, но в любом случае он выдает недостаток в логике, что вы не проверяете, был ли стиль уже добавлен. Обычно можно использовать wp_enqueue_script, который бы разобрал это, но по какой-то причине вы, возможно, не сможете этого сделать.

Поэтому вместо этого вам нужно сначала выполнить эту проверку. Я бы рекомендовал следующее:

глобальный $ we_found_shortcode; $ we_found_shortcode = false;

 function load_shortcode_styles($posts){ //function to check short codes here // if found $we_found_shortcode = true; } function header_check(){ global $we_found_shortcode; if($we_found_shortcode == true){ //regex to get id from shortcode(eg [item id=""] ) //get custom post meta from the id that has my custom css echo "\n<!-- my style -->\n<style>' . $custom_css . '</style>\n"; } } add_filter('the_posts', 'load_shortcode_styles' ); add_filter('wp_head', 'header_check' );