PHP DOM в WordPress - заменить и добавить атрибут - PullRequest
0 голосов
/ 26 мая 2019

Я пытаюсь изменить атрибут type полей ввода на number (по умолчанию они имеют тип hidden) и добавить readonly="readonly", но это не влияет на вывод HTML.Атрибуты такие же, как были.

Функция сработала правильно, потому что до того, как я добавил кодировку, на странице показывались неправильные символы.У меня есть правильный CSS для форматирования входных данных только для чтения, так что визуальные эффекты не являются проблемой, я также буду использовать больше условий для поиска только определенных входных тегов, но сейчас я бы хотел, чтобы этот код работал правильно:

add_filter('the_content', 'acau_lock_input');
function acau_lock_input($content) {
    $dom = new DOMDocument();       
    @$dom->loadHTML(mb_convert_encoding($content, 'HTML-ENTITIES', 'UTF-8'));

    foreach ($dom->getElementsByTagName('input') as $node) {            
        $node->setAttribute('type', 'number');
        $node->setAttribute('readonly', 'readonly');
    }
    $newHtml = $dom->saveHtml();
    return $newHtml;
}

1 Ответ

0 голосов
/ 26 мая 2019

Найджел Рен помог мне найти проблему.Решение смешное, the_content фильтр WordPress - это просто то, что помещается в текстовую область текущей страницы, как видно в редакторе.

Он не имеет ничего общего с полной HTML-структурой выходной страницы, поэтомув то время как неправильная кодировка может разбить текст всей страницы, $content возвращает только один шорткод, потому что он находится в редакторе страниц.

Чтобы узнать, как редактировать DOM для WordPress, включая вывод всех шаблонов, отметьте этовопрос:

PHP DOM в WordPress - добавить атрибут в выходной буфер HTML

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...