Php 更改标记<;a>;至<;部门>;使用WordPress上的文档

Php 更改标记<;a>;至<;部门>;使用WordPress上的文档,php,wordpress,function,domdocument,Php,Wordpress,Function,Domdocument,我是PHP的初学者,我想设置几个函数来替换WordPress上的特定代码位(包括我无法直接编辑的插件元素) 下面是一个示例(第一行:初始结果,第二行:期望结果): 盖尔贝里斯 PS:我遇到了这个话题:但是这个例子太复杂了,我不想做什么。你能给我一个解决这个问题的示例代码,这样我就可以尝试修改它来修改其他html元素吗?虽然我不确定这是否适合WP,但我基本上是从链接的答案中提取代码,并根据您的要求进行修改 我假设您希望找到带有class=“vcard author”的标记,这是XPath表达式

我是PHP的初学者,我想设置几个函数来替换WordPress上的特定代码位(包括我无法直接编辑的插件元素)

下面是一个示例(第一行:初始结果,第二行:期望结果):


盖尔贝里斯

PS:我遇到了这个话题:但是这个例子太复杂了,我不想做什么。你能给我一个解决这个问题的示例代码,这样我就可以尝试修改它来修改其他html元素吗?

虽然我不确定这是否适合WP,但我基本上是从链接的答案中提取代码,并根据您的要求进行修改

我假设您希望找到带有
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();
}

感谢您花时间做这个例子。如何将此代码添加到functions.php?我应该使用哪种添加操作或添加筛选器?您是否尝试过与您指出的答案类似的方法-
add\u filter('the\u content','replaceAWithDiv',20)?除非你能得到一些错误来发现发生了什么-我知道的关于WP的帮助不多。503一个页面上的网关坏了,而另一个页面上错误显示的所有重音符号。
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();
}