Intereting Posts
Как я могу изменить язык автоматических писем? Связывание страниц с первой страницей Список в алфавитном порядке Различный внешний язык для разных пользователей? WordPress .htaccess игнорировать путь и последующие файлы .htaccess в подпапках Вставьте идентификатор в пользовательском поле из медиа-загрузчика Как вставить в очередь стиль с помощью wp_enqueue_style () Пользовательские значения метаданных отправляются с помощью автосохранения Загружает главную страницу, но все постоянные ссылки 404 при использовании nginx & PHP-FPM Как разбить загруженные вами носители на каталоги? Несколько раскрывающихся меню с кнопкой «Отправить» Фильтрация WP_Query Отключить создание папок в течение нескольких лет и месяцев в папке uploads добавить мета-окно – настраиваемое поле: что выбрать? Каковы ваши мысли по переопределению встроенной функции setcookie () PHP для контроля того, создает ли WP файлы cookie

Крюк, добавленный к значению, кажется, называется несколько раз

У меня есть следующий код, запущенный в плагине:

add_filter('the_content','thousand_pay'); //Callback function function thousand_pay($content) { echo $content; if( !in_category( 'Stories') ) { return; } ?> <hr></hr> [Some HTML] <?php return } 

По некоторым причинам, на страницах отдельных сообщений HTML печатается несколько раз:

Ошибка, когда HTML печатается несколько раз

Может ли кто-нибудь подумать, почему это было бы? Я читал здесь, что мне, возможно, придется добавить к условному условию для проверки is_singular () и is_main_query (), чтобы он выглядел так: if(!in_category('Stories') || !is_singular() || !is_main_query() , но что, похоже, перестает печатать HTML на странице сообщений. Любые идеи?

Достаточно регулярно обращаться к контенту. Например, плагины SEO должны сделать это, чтобы получить к нему доступ и сгенерировать метаданные.

Также это крючок фильтра . Фильтры никогда не должны посылать ничего на страницу, они предназначены для изменения переданного значения и возврата его.

Если вы хотите что-то сделать в этот момент, но только внутри цикла, то in_the_loop() – это условие, в котором вы нуждаетесь.

У меня была такая же проблема. Мой фильтр the_content вызывался несколько раз, и это замедляло загрузку страницы, так как мой фильтр the_content вызывал внешний API. Поэтому в моем случае API запрашивался несколько раз для одних и тех же данных.

Я попытался использовать in_the_loop() , is_singular() и is_main_query() но иногда, в зависимости от темы, те не смогли ограничить вызовы моего фильтра до одного раза.

Поэтому я добавил константу в свой фильтр и, похоже, исправил проблему.

Ниже приведен пример того, как ограничить ваши вызовы фильтром the_content до одного раза:

 add_filter( 'the_content', 'se225721_the_content' ); function se225721_the_content( $content ) { if ( ! in_the_loop() ) { return $content; } if ( ! is_singular() ) { return $content; } if ( ! is_main_query() ) { return $content; } $content = ucwords( $content ); remove_filter( 'the_content', 'se225721_the_content' ); return $content; } 

Надеюсь, это поможет!

Эрик