Заменить или заменить код в WP_Footer

У меня есть некоторый код, который динамически добавляется в мой Footer через add_action('wp_footer' ...) . К сожалению, я не уверен, как удалить его с помощью обычных методов, я рассмотрел следующий вопрос и попытался использовать там решения:

remove_action или remove_filter с внешними классами?

Но не повезло ни с одним из ответов, так что теперь я ищу альтернативы . Есть ли способ запустить какой-либо preg_replace в содержимом wp_footer() ? Есть ли другие способы удалить вещи в wp_footer без использования remove_action() ?

Больше информации:

Плагин имеет выходной файл . В строке 697 добавлено действие:

add_action('wp_footer', array($this, 'add_inline_styles'));

Фактическая функция определена в строке 1743

Я не был уверен, ссылаться на RevOperations:: или RevSliderFront:: – Вот начальный файл установки в корневой папке плагина.

Solutions Collecting From Web of "Заменить или заменить код в WP_Footer"

Поскольку вы исключили remove_action вы можете сделать это только одним способом. И вы догадались об этом: preg_repalce , смесь substr но с небольшой помощью и PHP DOM

 add_action('wp_footer', 'my_start_footer_ob', 1); function my_start_footer_ob() { ob_start("my_end_footer_ob_callback"); } add_action('wp_footer', 'my_end_footer_ob', 1000); function my_end_footer_ob() { ob_end_flush(); } function my_end_footer_ob_callback($buffer) { // remove what you need from he buffer return $buffer; } 

Внутри my_end_footer_ob_callback вы редактируете $buffer в соответствии с вашими потребностями. Параметры $buffer должны иметь все содержимое нижнего колонтитула после того, как все действия и фильтры были вызваны действиями. Если он не просто редактирует 1000 на большее число, так что my_end_footer_ob вызывается последним.

Теперь я не знаю, какое содержимое HTML создает это действие, но вы можете использовать pre_replace или последовательность substr s для его удаления.

Если вы хотите использовать PHP DOM, выполните следующие действия:

 function my_end_footer_ob_callback($buffer) { // remove what you need from he buffer $doc = new DOMDocument; $doc->loadHTML($buffer); $docElem = $doc->getElementById("theID"); if($docElem !== NULL) // if it exists $docElem->parentNode->removeChild($docElem); return $doc->getElementsByTagName('body')->firstChild->nodeValue; } 

Скажи мне, если это сработает для тебя.