Я пытаюсь удалить все изображения и окружающий тег <a>
из get_the_content()
с помощью этого фрагмента кода:
<?php $content = get_the_content(); $postOutput = preg_replace(array('{<a[^>]*><img[^>]+.}','{></a>}'),'', $content); echo $postOutput; ?>
Это хорошо работает, за исключением тегов <p>
вокруг абзацев.
1. Является ли это нормальным при использовании get_the_content()
?
2. и как я могу добавить их к моему результату?
3. Или мое регулярное выражение ошибочно?
Хорошо, я отвечу на свои вопросы:
<p>
на get_the_content()
благодаря @s_ha_dum <p>
мне нужно применить фильтр содержимого, как указано здесь (прокрутите вниз до «Альтернативное использование»). См. Новый вопрос, который приводит к следующему коду здесь.
$dom = new DOMDocument; $dom->loadHTML(get_the_content()); $xpath = new DOMXPath($dom); $nodes = $xpath->query('//img|//a[img]'); foreach($nodes as $node) { $node->parentNode->removeChild($node); } $no_image_content = $dom->saveHTML(); $no_image_content = apply_filters('the_content', $no_image_content); $no_image_content = str_replace(']]>', ']]>', $no_image_content); echo $no_image_content;