2016-03-05 3 views
0

Wordpress отлично, но у него очень неприятная привычка добавлять текст абзаца везде.Как найти подстроку и удалить окружающие теги P

Проблема в том, что даже ссылки на youtube окружены тегами P. И когда это так, они не будут внедрены, и он останется ссылкой, а не воспроизводимым видео. Я пробовал всевозможные вещи, чтобы Wordpress не добавлял теги P, но ничего не работает.

Так что я хочу реализовать фильтр, который читает полный контент сообщения, находит URL-адреса youtube и удаляет из него окружающие теги P.

Например, у меня есть это:

add_filter('the_content','replace_content'); 
function replace_content($content) 
{ 
    $content = str_replace('###replacement###', 'something_else',$content); 
    return $content; 
} 

$ содержание содержит полное содержание. Теперь мне нужно найти в URL-адресах $ content youtube, которые окружены тегом P. Например, <p>https://youtu.be/abcdefg</p>

Затем выньте из него бирку P и положите ее обратно.

Любая помощь будет оценена очень сильно.

Спасибо.

Maurice

ответ

0

Простой и не слишком хорошо регулярное выражение, но это делает трюк

$content = preg_replace('#<p>(https?:\/\/youtu.+?)<\/p>#i', '$1',$content); 
0

Вы можете легко удалить функции ALLtogether вместо возиться с регулярными выражениями впоследствии (они known to cause a significant loss in mental health при применении к DOM в любом случае :)

В вашем functions.php:

remove_filter('the_content', 'wpautop'); 
remove_filter('the_excerpt', 'wpautop'); 

См. Дополнительную информацию об официальном Wordpress website.
Для некоторых более точных настроек есть plugin.

Смежные вопросы