概要説明
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 | テーマの最初で実行されるアクションフック |
---|---|
~ | あまり指定しないものは省略 |
2. wp_default_scripts | scriptの処理 |
3. wp_default_styles | cssの処理 |
4. init | プラグインの初期化処理 |
~ | あまり指定しないものは省略 |
5. wp | is_page( 126 ) 等の処理が判定可能になる |
~ | あまり指定しないものは省略 |
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'); }