remove_filter( 'the_content', 'wpautop' ); только для определенных типов записей

24 янв. 2013 г., 01:09:00
Просмотры: 27.5K
Голосов: 7

Я хочу попробовать убрать автоматическое добавление тегов <p> и <br> для моего произвольного типа записей.

Похоже, что

remove_filter( 'the_content', 'wpautop' );

сделает это, но как применить изменение только к выбранному типу записей? Я попробовал написать функцию для этого, но она не работает:

function remove_tags() {
    global $post_type;

    if ( 'client' == $post_type ) {
        remove_filter( 'the_content', 'wpautop' );
    }
}
2
Комментарии

Куда вы добавляете эти функции?

s_ha_dum s_ha_dum
24 янв. 2013 г. 01:15:38

в файл моего плагина для пользовательского типа записи

user319940 user319940
24 янв. 2013 г. 01:16:52
Все ответы на вопрос 2
3
12

Подключиться к фильтру 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;
}
24 янв. 2013 г. 06:07:47
Комментарии

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

Volker E. Volker E.
1 февр. 2015 г. 02:52:51

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

fuxia fuxia
1 февр. 2015 г. 02:55:03

О, точно. Спасибо! И у меня сейчас даже не поздно. :}

Volker E. Volker E.
1 февр. 2015 г. 02:58:48
3
11
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 - похоже, что он решает задачу.

24 янв. 2013 г. 01:28:20
Комментарии

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

s_ha_dum s_ha_dum
24 янв. 2013 г. 01:29:19

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

user319940 user319940
24 янв. 2013 г. 01:33:34

Это сломается, если другой плагин захочет сделать то же самое для другого типа записей.

fuxia fuxia
24 янв. 2013 г. 05:59:19