ワードプレスの機能を自作プログラムで利用するactionとfilterの仕組み

ワードプレスのPHPプログラミングで最もよく使われる仕組みとしてadd_action,add_filterという仕組みがあります。この二つのワードプレスの組み込み処理はワードプレスが投稿を出力したり、コメントを処理したり、テーマのHTMLを読みだしたりするときに任意の自分が作ったプログラムで割込み(フック と呼ばれます)できる仕組みであるとお考えください。

add_action 様々なワードプレスのデータ処理に割り込んで任意の処理を走らせる仕組み
add_filter 様々なワードプレスのデータ出力に割り込んで、出力を入れ替えたり、加工したりする仕組み

add_actionの使い方

add_actionは下記のようにテーマのFunctions.phpや作成しているプラグインに記載することで好きなプログラムをそのタイミングで割込みできる仕組みです。

add_action(‘割り込みたいワードプレスの処理’,’割り込むプログラム関数名’,’この処理の割込み順位 ※なくても可’);

という書式になります。

代表的なadd_actionのコード例を見ていきましょう

function my_save_post( $post_ID ) {
    update_post_meta($post_ID, 'customkey', 'あああああ');
}
add_action( 'save_post', 'my_save_post');

この処理はsave_postというワードプレスの投稿の保存時 にその投稿にカスタムフィールド(customkey)にあああああと情報を追加するコードです。
save_postにフックするとその任意の関数my_save_postには、$post_ID=投稿ID, $post=投稿データ $update=公開または下書きのステータス の3つの情報をワードプレスが送り込んでくれます。

add_actionはその他にも

init ワードプレスのテーマとプラグインが初期化されたとき
get_header ヘッダーを出力するとき
delete_user ユーザーが削除されるとき

等様々な処理の要所要所で任意のプログラムを割り込ませて実行できます。

このようにadd_actionを利用すると数百種類に及ぶ、ありとあらゆるワードプレスの処理に割り込んで任意のプログラムを動かすことができるようになります。

add_filterの使い方

add_filterもactionと書式は同じです。

add_filter(‘置き換えたいワードプレスの出力処理’,’出力関数名’,’この処理の割込み順位 ※なくても可’);

例としまして、タイトルを出力するときに任意の文字列をタイトルにくっつける処理を見てみましょう

function my_title($title) { 
    if ( is_singular() && in_the_loop() ) {
        $title = $title."この文字列が全てのタイトルにくっつきます";
    }
    return $title;
}
add_filter('the_title', 'my_title');

この処理は’the_title’というワードプレスが投稿のタイトルを出力するときに、割込み もし現在のページが単体ページかつワードプレスのコンテンツ出力の処理中( is_singular() && in_the_loop())であるなら、渡された本来のタイトルに文字列をくっつけて出力します。

add_filterはadd_filterと違い、return $titleと記載してある部分のように、加工した文字列をReturnして戻す処理が必要となります。

このコンテンツは役に立ちましたか?

関連コンテンツ

コメントを投稿する


上の計算式の答えを入力してください