Intereting Posts
WPDB Placeholders и второй аргумент для подготовленных заявлений Как получить все вложения, которые используются в текущем сообщении, а не только для детей? Как связать ключевые слова в настраиваемых полях? URL-адрес wp-admin не позволяет войти и перенаправить на ту же страницу Есть ли способ копирования / вставки, дублирования или автогенерации сообщений для быстрого тестирования? Как вы изменяете «post_parent» настраиваемого типа сообщений? Перевод на свежий английский язык Получите эти условия с определенным значением мета-ключа Возможно ли сделать оболочку colorpicker-оболочку WordPress (iris) выше, а не уменьшать масштаб цветных колонок? Как вы можете делать постоянную ссылку для пользовательских типов сообщений и таксономии? WP cron: когда нужно запланировать однократное событие Пользовательское поле Singleton (Meta Box) Как добавить кнопку главного меню, которая перенаправляется на другой сайт или поддомен? Проверьте дочерние / родительские категории, если существует Не переименуете ли файл `content.php` какие-либо проблемы?

Как фильтровать контент the_content () & include из шаблона

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

Есть ли другой способ переопределить содержимое одной страницы из плагина?

 add_filter( 'the_content', 'change_single_content' ); function change_single_content($content){ global $post; if ( 'my-CPT' == get_post_type() && is_single() ){ ob_start(); include my_plugin_theme('single-template.php'); //include single template content return ob_get_clean(); } return $content; } 

Solutions Collecting From Web of "Как фильтровать контент the_content () & include из шаблона"

Я предполагаю, что single-template.php использует the_content . Теперь подумайте о том, что происходит:

  1. Ваш фильтр вызывает загрузку single-template.php
  2. single-template.php использует the_content
  3. Таким образом, single-template.php загружается снова
  4. Который использует the_content
  5. Что загружает single-template.php
  6. Который использует the_content

Я не совсем уверен, как это исправить, поскольку ваш вопрос освещен подробно. Трудно сказать, что делает большая часть кода или какова ваша конечная цель, но это может быть так же просто, как удаление фильтра условно:

 add_filter( 'the_content', 'change_single_content' ); function change_single_content($content){ global $post; if ( 'my-CPT' == get_post_type() && is_single() ){ remove_filter( 'the_content', 'change_single_content' ); // this !! ob_start(); include my_plugin_theme('single-template.php'); //include single template content return ob_get_clean(); } return $content; } 

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

 add_filter( 'the_content', 'filter_content' ); function filter_content( $content ){ if ( is_single() ){ $new_content = str_replace( 'for', 'FOR', $content ); return $new_content; } else { return $content; } } 

Попробуй это. Я попытался заменить the_content на один пост. Он заменяется, но не на индексной странице из-за is_single() .

Вы можете настроить его, который соответствует вашим потребностям.

Проблема с вашим кодом заключается в том, что вы принимаете $content качестве параметра и возвращаете ob_get_clean() . В этом случае вы должны вернуть $content после его настройки.

Как и в коде выше, я принял $content , изменил его и вернул $new_content .