Изменение тега <a>на <div>с помощью DomDocument на WordPress - PullRequest
0 голосов
/ 24 октября 2019

Я новичок в 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: я сталкивался с этой темой: парсинг содержимого WordPress , но пример слишком сложен для того, что я хочусделать. Не могли бы вы представить пример кода, который решает эту проблему, чтобы я мог попытаться изменить его, чтобы изменить другие элементы HTML?

1 Ответ

1 голос
/ 24 октября 2019

Хотя я не уверен, как это вписывается в 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();
}
...