0

特定のページ テンプレートから、<img>周囲の<a>タグの有無にかかわらずすべてを削除しようとしています。the_content()私はすでに含むいくつかの解決策を見つけましたが、使用する場合preg_replace、段落を囲む ものはありません。get_the_content()get_the_content()<p>

the_content()ページ テンプレートをフィルター処理してすべて<a><img></a><img>タグ を削除するにはどうすればよいですか?

ここでは、そのために使用するpreg_replaceのではなく、DOMを使用するようにアドバイスされています。私はPHP初心者なので、正しい方向へのプッシュは素晴らしいでしょう。

4

1 に答える 1

0

さて、私は自分の質問に答えますが、最初に私を正しい方向に押してくれたゴードンに感謝します. 私の結果は、stackoverflow のこの質問に基づいています。

多くの例で見たようなものではDOMありません。 言及すべきことの 1 つは、フィルタリングされた結果をエコーするため、代わりに使用する必要があることです。しかしコーデックスには、と同じ出力を得るためにフィルタリングする方法のヒントがあります。 preg_replace()
get_the_content()the_content()the_content()get_the_content()the_content()

これが私が望むことをするコードです:

$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(']]>', ']]&gt;', $no_image_content);
echo $no_image_content;
于 2013-02-15T07:52:10.807 に答える