我是PHP的初学者,我想设置一些函数来替换WordPress上的特定代码位(包括我无法直接编辑的插件元素)。
下面是一个示例(第一行:初始结果,第二行:所需结果):
<a href="" class="vcard author"><span class="fn" itemprop="name">Gael Beyries</span></a>
<div class="vcard author"><span class="fn" itemprop="name">Gael Beyries</span></div>
PS:我遇到了以下主题:Parsing WordPress post content,但是该示例对于我想做的事情来说太复杂了。您能否介绍一个解决此问题的示例代码,以便我可以尝试对其进行修改以修改其他html元素?
答案 0 :(得分:1)
尽管我不确定它是否适合WP,但我基本上已经从链接的答案中获取了代码,并根据您的要求进行了修改。
我假设您想使用<a>
查找class="vcard author"
标记,这是XPath表达式的基础。 foreach()
循环中的代码仅将数据复制到一个新节点并替换旧节点...
function replaceAWithDiv($content){
$dom = new DOMDocument();
$dom->loadHTML($content);
$xpath = new DOMXPath($dom);
$aTags = $xpath->query('//a[@class="vcard author"]');
foreach($aTags as $a){
// Create replacement element
$div = $dom->createElement("div");
$div->setAttribute("class", "vcard author");
// Copy contents from a tag to div
foreach ($a->childNodes as $child ) {
$div->appendChild($child);
}
// Replace a tag with div
$a->parentNode->replaceChild($div, $a);
}
return $dom->saveHTML();
}