remove_filter( 'the_content', 'wpautop' ); только для определенных типов записей
Я хочу попробовать убрать автоматическое добавление тегов <p>
и <br>
для моего произвольного типа записей.
Похоже, что
remove_filter( 'the_content', 'wpautop' );
сделает это, но как применить изменение только к выбранному типу записей? Я попробовал написать функцию для этого, но она не работает:
function remove_tags() {
global $post_type;
if ( 'client' == $post_type ) {
remove_filter( 'the_content', 'wpautop' );
}
}

Подключиться к фильтру the_content
до вызова фильтра wpautop
, проверить тип записи и удалить фильтр wpautop
, который добавляется в wp-includes/default-filters.php
с приоритетом по умолчанию 10
:
add_filter( 'the_content', 'wpse_82860_remove_autop_for_posttype', 0 );
function wpse_82860_remove_autop_for_posttype( $content )
{
# здесь укажите нужный тип записи
'post' === get_post_type() && remove_filter( 'the_content', 'wpautop' );
return $content;
}

Спустя годы у меня всё ещё остаются проблемы с пониманием обработки priority
для фильтров в WP. Разве 0
не означает, что он вызывается первым, а затем вызывается стандартный wpauto
со своим priority
, равным 10
, и возвращает <p>
обратно?

@VolkerE. wpautop
больше не вызывается, потому что он был отменён ранее.

remove_filter('the_content','wpautop');
// Определяем, когда нужно применять автоматическое добавление параграфов
add_filter('the_content','my_custom_formatting');
function my_custom_formatting($content){
if(get_post_type()=='my_custom_post') // если не работает, можно передать текущий объект поста в get_post_type
return $content; // без автопараграфов
else
return wpautop($content);
}
нашел этот код на stackoverflow - похоже, что он решает задачу.

+1 за то, что нашли ответ самостоятельно :) Пожалуйста, укажите URL вопроса, где вы нашли этот код.

оригинал можно найти здесь http://stackoverflow.com/questions/7697465/wordpress-remove-auto-generated-paragraphs-for-speciffic-custom-post-type
