表示前にフックして出力テキストを置換する

概要説明

WordPressにて生成したhtml出力を行う手前で置換作業が必要な際に活用しているテクニック。プラグイン内やどこを触ったら良いかわからないといった場合に、最終出力前に置換してソースを変更することができます。フロントページ、管理画面どちらも置換可能です。

functions.php
/*----------------------------------------------------
 表示前にフックして出力テキストを置換する
----------------------------------------------------*/
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などを事前に付与しておけばそれぞれのプラグインで調整を行わなくても最終的な置換処理で文言変更、タグの調整などが行なえます

記事の本文だけが置換対象ならこちら

functions.php
/*----------------------------------------------------
 記事本文だけの置換
----------------------------------------------------*/
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

テーマの最初で実行されるアクションフック
functions.php ファイルが読み込まれた後に実行

あまり指定しないものは省略
widgets_init、registered_taxonomyなど

2. wp_default_scripts

scriptの処理

3. wp_default_styles

cssの処理

4. init

プラグインの初期化処理

あまり指定しないものは省略
wp_register_sidebar_widgetなど

5. wp

is_page( 126 ) 等の処理が判定可能になる

あまり指定しないものは省略
admin_menuなど

6. shutdown

一番最後ではないが最後の方の処理

よってafter_setup_theme~shutdownまでの間の出力を取得することで一通りの出力内容をバッファさせることができるという仕組み。

アクションフックの実行順を実際に確認して見る方法

functions.php
/*----------------------------------------------------
 アクションフックの実行順をコンロールに表示
----------------------------------------------------*/
if ( !function_exists( 'console_output_action_hook' ) ){
    function console_output_action_hook() {
        global $wp_actions;
        $order = 1;
        echo '';
    }
    add_filter('shutdown','console_output_action_hook');
}
表示前にフックして出力テキストを置換する

フック処理を使用したカスタマイズ例

WordPress Developer Resources

関連機能

  1. WordPress アスキーアートや隠しメッセージをhtmlソースに追加する

  2. bodyタグに任意のclassを追加

  3. WordPress 永続オブジェクトキャッシュAPC設定を設定して高速化 (エックスサーバー)

サイドバー

よく使うカスタマイズ

最近の記事

アニメの名言集

当たり前と思われる所にこそ
答えは隠されているものだ

STEINS;GATE
by 岡部 倫太郎

Profile

PAGE TOP
Amazon プライム対象