Как я могу удалить абзац из содержимого коротких кодов?
Если вы создали шорткоды в Wordpress, вы, возможно, заметили, что, когда вы получаете содержимое своего шорткода, оно завернуто в теги html-абзацев.
Я не знаю, почему программисты сделали это. Мне кажется очень плохой идеей добавлять форматирование к фактическому содержимому.
Я нашел сообщение, в котором представлено это решение:
Http://donalmacarthur.com/articles/cleaning-up-wordpress-shortcode-formatting/
Но я интересно: Есть ли решение, предлагаемое самим API wordpress, или что-то, чего мне здесь не хватает?
3 answers
Короткие коды, поскольку они вставлены в редактор, соответствуют правилам редактора. Нажатие на возврат в редакторе создаст тег абзаца, как и любой другой текст. Это одна из особенностей TinyMCE. Чтобы узнать больше о TinyMCE, ознакомьтесь с их форумом и особенно в этой теме
Ссылка в вашем вопросе теперь исчезла, поэтому я не уверен в предложенном решении, но вот другое решение для потомков:
Добавьте следующее в functions.php чтобы запустить форматирование после оценки коротких кодов:
remove_filter( 'the_content', 'wpautop' );
add_filter( 'the_content', 'wpautop' , 12);
Автор отмечает, что вам нужно будет явно включить форматирование в плагинах, которые этого требуют:
function my_shortcode($atts) {
$content = wpautop(trim($content));
[snip]
Простое решение, которое сработало для меня, состоит в том, чтобы просто удалить конец абзаца "
" из начала содержимого $, а начало абзаца "" из конца содержимого $.
Например, с регулярным выражением, таким как:
function fix_paragraphs($content)
{
$patterns = array('/^<\/p>/i', '/<p>$/i');
return preg_replace($patterns, '', $content);
}
Или, если вы уверены, что они будут там, вы можете просто обрезать их вот так:
return substr($content, 4, -3);