remove_filter ('the_content', 'wpautop') не работает

12 янв. 2011 г., 14:42:45
Просмотры: 14K
Голосов: 2

Я пытаюсь отключить автоматическое добавление параграфов в WordPress с помощью:

remove_filter ('the_content', 'wpautop');

но мой контент всё равно оборачивается в автоматические теги <p>... Что я делаю не так?

Код находится в конце файла functions, но не в functions.php, а в файле, который подключается через functions.php (и размещение кода непосредственно в functions.php не меняет ситуацию).

Обновление: var_dump( $wp_filter['the_content'] ); выводит NULL. Как я могу проверить, почему этот фильтр не срабатывает?

0
Все ответы на вопрос 4
0

Если вы используете плагин TinyMCE Advanced, попробуйте снять галочку с этой расширенной настройки:

Прекратить удаление тегов <p> и <br /> при сохранении и показывать их в HTML-редакторе

Отключение этой опции и использование кода remove_filter ('the_content', 'wpautop'); в файле functions.php решило мою проблему.

11 июл. 2011 г. 23:04:34
14

Ваш код абсолютно верный. Вы можете попробовать этот фрагмент в шаблоне, чтобы убедиться, что фильтр действительно удаляется:

var_dump( $wp_filter['the_content'] );

Если фильтр не удаляется, возможно, код не доходит до вашего удаления фильтра (например, из-за return выше по коду) или фильтр позже снова добавляется другим кодом.

12 янв. 2011 г. 15:52:02
Комментарии

или попробуйте изменить приоритет фильтра, по умолчанию он равен 10

onetrickpony onetrickpony
12 янв. 2011 г. 16:08:48

@Ambitious Amoeba не совсем понимаю, что вы имеете в виду? Приоритет должен точно совпадать для работы remove_filter().

Rarst Rarst
12 янв. 2011 г. 16:17:35

да, но если вы добавляете фильтр с приоритетом 20, разве вы не должны удалять его с тем же приоритетом? возможно, autop добавляется с другим приоритетом...

onetrickpony onetrickpony
12 янв. 2011 г. 16:36:15

@Ambitious Amoeba Я проверил исходный код и протестировал его, он добавлен без указания приоритета, поэтому используется значение по умолчанию.

Rarst Rarst
12 янв. 2011 г. 16:43:25

var_dump( $wp_filter['the_content'] ); выводит NULL. Я попытался найти wpautop через grep, но, судя по всему, ни один из php-файлов в wp-content не содержит этого, кроме моей строки кода.

gillespieza gillespieza
12 янв. 2011 г. 21:13:59

@Amanda Если вы вызываете эту строку внутри какой-либо функции, не забудьте добавить global $wp_filter;. wpautop настраивается в wp-includes\default-filters.php.

Rarst Rarst
12 янв. 2011 г. 21:16:23

@Rarst - Я вставил var_dump в header.php, сразу после вывода меню...

gillespieza gillespieza
12 янв. 2011 г. 21:20:04

@Rarst - чёрт, я разместил его вне цикла. Он возвращает кучу данных... включая shortcode_unautop, но ничего больше про autop я не увидел

gillespieza gillespieza
12 янв. 2011 г. 21:37:37

Ты пробовал понизить приоритет с 10 (по умолчанию) до 1, как советовал One Trick Pony?

editor editor
7 февр. 2011 г. 18:49:57

Удалите shortcode_unautop, у меня самого была такая проблема, это preg_replace в этом фильтре возвращает NULL из-за ошибки.

Backie Backie
7 февр. 2011 г. 20:30:00

Я согласен с теми, кто предлагает изменить приоритет фильтра. Повысьте его до 11, или 20, или даже 99, просто чтобы проверить, действительно ли проблема в приоритете.

Chip Bennett Chip Bennett
8 апр. 2011 г. 21:06:19

Я пробовал remove_filter ('the_content', 'wpautop', 99); и remove_filter ('the_content', 'wpautop', 1); - без изменений.

gillespieza gillespieza
13 апр. 2011 г. 14:21:12

@Backie добавил remove_filter ('the_content', 'wpautop'); remove_filter ('the_content', 'shortcode_unautop'); - без изменений. Пробовал с приоритетами 1 и 99 - без изменений.

gillespieza gillespieza
13 апр. 2011 г. 14:36:23

Ничего из этого не работает для меня. Это невероятно разочаровывает. Мне нужно, чтобы теги <p> не оборачивали скрипты, динамически генерируемые шорткодом и поэтому не подключаемые через enqueue. Чёрт возьми, Wordpress, хватит изменять мой код! Почему так сложно просто сказать: "Эй, я программист, а не ты! Не создавай код, *я* это сделаю!"

John Smith John Smith
17 мар. 2024 г. 06:23:39
Показать остальные 9 комментариев
1

Была такая же проблема, исправил с помощью CSS:

<style>
p:empty{
  height: 0;
  margin: 0;
  padding: 0;
}
</style>
17 апр. 2018 г. 20:51:46
Комментарии

Это не "исправляет проблему", когда в коде присутствуют блоки CSS или JS и т.д. Это не решение, а кривоватый обходной путь.

Sean Kendle Sean Kendle
22 авг. 2023 г. 16:53:43
1

Моя проблема возникла при разработке шорткода. Благодарность Самуэлю Вуду. Вот его совет:

И если вы вставляете шорткоды, используйте блок шорткода вместо того, чтобы вводить их в блок P. Тогда у вас не будет оберточных тегов P.

https://wordpress.org/support/topic/wpautop-not-working-on-wp_editor/

2 сент. 2021 г. 17:43:50
Комментарии

Итак, для тех из нас, кто не использует блоки.... ???

John Smith John Smith
17 мар. 2024 г. 06:22:10