管理画面だけ置換対象とする
/*----------------------------------------------------
表示前にフックして出力テキストを置換する
----------------------------------------------------*/
if ( !function_exists( 'final_processing_replace' ) ){
if ( is_admin() ) {
function final_processing_replace($buffer) {
$buffer = str_replace('ダッシュボード', 'HOME', $buffer);
return $buffer;
}
function buf_start() { ob_start('final_processing_replace'); }
function buf_end() {
if( ob_get_length() ){
ob_end_flush();
}
}
add_action('after_setup_theme', 'buf_start');
add_action('shutdown', 'buf_end');
}
}
フロントページでもプラグインでも置換の対象にできる
置換対象の条件を指定しなければ、どこでも実行されます。置換しやすいようにclassやidなどを事前に付与しておけば、それぞれのプラグインで調整を行わなくても、最終的な置換処理で文言変更やタグの調整などが行なえます。
表側のページだけを置き換えたいときは、HTML コメントを一括で削除する記事のように、template_redirect でバッファを始めると、REST API(ブロックエディターの読み込み)などを壊しません。
記事の本文だけが置換対象ならこちら
/*----------------------------------------------------
記事本文だけの置換
----------------------------------------------------*/
if ( !function_exists( 'replace_the_content' ) ){
function replace_the_content($the_content) {
$the_content = str_replace('あああ','いいい',$the_content);
return $the_content;
}
add_filter('the_content','replace_the_content');
}
アクションフックの処理の順番
| 1. after_setup_theme |
テーマの最初で実行されるアクションフック |
|---|---|
| ~ |
あまり指定しないものは省略 |
| 2. wp_default_scripts |
scriptの処理 |
| 3. wp_default_styles |
cssの処理 |
| 4. init |
プラグインの初期化処理 |
| ~ |
あまり指定しないものは省略 |
| 5. wp |
is_page( 126 ) 等の処理が判定可能になる |
| ~ |
あまり指定しないものは省略 |
| 6. shutdown |
一番最後ではないが最後の方の処理 |
よってafter_setup_theme~shutdownまでの間の出力を取得することで一通りの出力内容をバッファさせることができるという仕組み。
※ widgets_init は init の中(優先度 1)で動き、wp_default_scripts はスクリプトを最初に使うときに動くので、実際の順番はサイトやプラグインによって前後します。下のコードで、自分のサイトの順番を確認してください。
アクションフックの実行順を実際に確認して見る方法
/*----------------------------------------------------
アクションフックの実行順をコンソールに表示
----------------------------------------------------*/
if ( ! function_exists( 'console_output_action_hook' ) ) {
function console_output_action_hook() {
// 管理者のときだけ出す
if ( ! current_user_can( 'manage_options' ) ) {
return;
}
global $wp_actions;
$order = 1;
echo '<script>';
foreach ( $wp_actions as $action => $count ) {
// 順番 : アクションフック名
echo 'console.log(' . wp_json_encode( $order . ' : ' . $action ) . ');';
$order++;
}
echo '</script>';
}
add_action( 'wp_footer', 'console_output_action_hook', 9999 );
add_action( 'admin_footer', 'console_output_action_hook', 9999 );
}
以前のコードは shutdown で書き出していたので、REST API や Ajax の応答の最後にも script が付き、データが壊れることがありました。表のページと管理画面のフッターで、管理者のときだけ出す形に直しました(2026/10/18)。


