Intereting Posts
вы можете установить значение по умолчанию для настраиваемого поля Создание программных программ Страница администрирования плагина WordPress – использование функции WordPress в связанном файле php Как я могу кэшировать ответ API WordPress Rest Выполнялось ли обновление с 3.3 до 3.3.1 вносить изменения в навигацию по меню? Как интернационализировать WordPress – извлекать строки с текстовыми доменами, для каждого текстового поля отдельно Виджет Dropdown не работает restore_current_blog () vs switch_to_blog () Измените путь, в который загружаются плагины wordpress Проверка спама в пользовательской форме – akismet Получить метаинформацию, связанную с текущим сообщением Как сделать основное меню неизменным в ПК и мобильных версиях темы «Двадцать шестнадцать» WordPress добавляет дополнительную ширину для почтовых ящиков контейнеров Pods CMS – Получить прикрепленные записи ACT с помощью auto-id? Получать количество сообщений на данной странице

Как обеспечить, чтобы фильтр «the_content» выполнялся только для основного отображаемого содержимого?

У меня есть плагин, который добавляет метод в фильтр «the_content».

add_filter('the_content', 'myFilteringFunction', 10000);

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

Более того, я хочу, чтобы он был включен для настраиваемого типа сообщений, который я определил в том же плагине. Поэтому я понял, что это проверка, думая, что этого будет достаточно.

 if( is_single() && get_query_var('post_type') == 'myCustomPostType' && is_main_query() ) 

К сожалению, он не работает должным образом – по крайней мере, не во всех случаях.

На странице установлен тип WP плагина, он не работает (ссылки добавлены, несмотря на условие). Зачем?

Solutions Collecting From Web of "Как обеспечить, чтобы фильтр «the_content» выполнялся только для основного отображаемого содержимого?"

Попробуйте добавить условие к вашей функции фильтрации, которая проверяет ваш тип сообщения на get_post_type .

if ( 'book' == get_post_type() )

Если вы хотите также применить этот фильтр к страницам, попробуйте is_singular () и укажите свой собственный тип сообщений в качестве аргумента.

is_singular('book');

Это вернет true, если выполнено одно из следующих условий:
холост()
is_page ()
is_attachment ()
'book' == get_post_type ()

Согласно документации WordPress , вы можете выполнить это, используя этот код:

 add_filter( 'the_content', 'filter_the_content_in_the_main_loop' ); function filter_the_content_in_the_main_loop( $content ) { // Check if we're inside the main loop in a single post page. if ( is_single() && in_the_loop() && is_main_query() ) { return $content . "I'm filtering the content inside the main loop"; } return $content; } 

Или используйте ту же логику через одну строку в начале функции обратного вызова фильтра:

 if( !is_single() || !in_the_loop() || !is_main_query() ) return $content;