add_action('wp_footer' ...)
を介してフッターに動的に追加されるコードがあります。残念ながら、従来の方法を使用してそれを削除する方法がわからない、私は次の質問を見て、そこで解決策を使用しようとしました:
remove_actionまたはremove_filterを外部クラスに追加しますか?
しかし、答えのどれにも運がなかったので、今私は Alternatives を探しています。実際にwp_footer()
の内容に対して何らかのpreg_replace
を実行する方法はありますか? remove_action()
を使わずにwp_footer
内のものを削除する方法は他にありますか?
追加情報:
プラグインには 出力ファイル があります。 行697 には、アクションを実際に追加します。
add_action('wp_footer', array($this, 'add_inline_styles'));
実際の関数は 1743行目で定義されています。
RevOperations::
とRevSliderFront::
のどちらを参照するかわからない - プラグインフォルダのルートにある 初期設定ファイル です。
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
パラメータは、すべてのアクションとフィルタがactionに呼び出された後に、フッターのすべての内容を持つべきです。単に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;
}
これでうまくいくかどうか教えてください。