Удалить wpautop из содержимого шорткода / удалить пробелы в буферизации


Я использую плагин Mailchimp, и у него есть шорткод, который использует буферизацию вывода, чтобы захватить код своего виджета и выплюнуть его в содержимое.

Однако в коде виджета много пробелов, поэтому фильтры the_content повсюду выбрасывают бесполезные прерывания строк (например, после скрытых вводов) и пустые теги p... делая его непригодным для использования. Я удаляю шорткод, чтобы добавить свой собственный, но я не уверен, что нужно сделать, чтобы предотвратить фильтр WordPress wpautop от того, чтобы сойти с ума. Моей первой мыслью было убрать пробелы между HTML-тегами, но я не знаю, как это сделать.

В идеале плагин объединял бы возвращаемую строку вместо использования буферизации вывода, но я не знаю, будут ли они когда-нибудь беспокоиться.

Author: Peter Mortensen, 2012-06-19

3 answers

Для этого вам не нужен плагин. Просто добавьте 3 строки кода в конец файла functions.php в вашей активной теме:

remove_filter( 'the_content', 'wpautop' );
add_filter( 'the_content', 'wpautop' , 99 );
add_filter( 'the_content', 'shortcode_unautop', 100 );
 9
Author: MaximOrlovsky, 2012-12-20 04:59:55

Ответ Ши является хорошим решением, но он отключает автозапуск для всех коротких кодов, которые могут быть нежелательными.

Я написал скрипт, который позволяет запускать следующее:

include "shortcode-wpautop-control.php";
chiedolabs_shortcode_wpautop_control(array('yourshortcode'));

Это позволяет отключить wpautop для определенных коротких кодов вместо всех.

Еще раз, я написал сценарий. Я не собираюсь заниматься саморекламой, но по мере того, как я буду обновлять его в будущем, я буду обновлять его на GitHub, поэтому нет смысла публиковать код здесь.

Вы можете увидеть сценарий на Шорткод wp-автоматическое управление.

 4
Author: Chiedo, 2019-12-08 22:50:07

Доступна функция WordPress, которая отлично справляется с этой работой. Для этого нет необходимости использовать пользовательскую функцию или плагин.

Просто используйте функцию shortcode_unautop($pee), чтобы удалить wpautop из содержимого шорткода. Здесь $pee - требуемая строка.

 1
Author: Eh Jewel, 2019-12-08 22:50:11