私はWordPressで生成された全ページを提供するフィルタを探しています - メタタグ、ボディ、スタイリングそして動的コンテンツを含むヘッドセクションを含みます。 the_content()とthe_excerpt()は動的部分に対してのみ機能し、リクエストフィルタはSQLクエリに対してのみ機能するように見えます(しない)。
すべてのリンクまたはボタンでページ全体の一部のデータをフィルタリングしたいと思います。これどうやってするの?
これを実現するには、 出力バッファリング を使用できます。
テンプレートがレンダリングされる直前に優先度の高いフックを追加します。
add_action('template_redirect', 'foo_buffer_go', 0);
function foo_buffer_go(){
ob_start('foo_buffer_callback');
}
非常に低い優先順位でシャットダウンフックを追加してください。
add_action('shutdown', 'foo_buffer_stop', 1000);
function foo_buffer_stop(){
ob_end_flush();
}
コールバック内で、レンダリングされたHTMLを操作します。
function foo_buffer_callback($buffer){
//Do something with the buffer (HTML)
return $buffer;
}
あなたはここにプラグインとしてこれをダウンロードすることができます: http://3-3.me/B9lK
@ BrianFegterのコードを少し変更して、出力バッファが開かれた場合にのみ閉じられるようにします。これには、フィルタリングするかどうかを条件付きで決定できるという利点があります。
if ($want_to_modify_content) {
add_action('template_redirect', 'YOURPLUGIN_buffer_start', 0);
}
function YOURPLUGIN_buffer_start() {
add_action('shutdown', 'YOURPLUGIN_buffer_stop', PHP_INT_MAX);
ob_start('YOURPLUGIN_modify_content');
}
function YOURPLUGIN_buffer_stop() {
ob_end_flush();
}
function YOURPLUGIN_modify_content($content) {
//modify $content
return $content;
}
HTTP API /を使用して、 投稿URL の内容を取得できます。