WordPress開発で覚えておきたいアクションフックとフィルターフック

シェアする

WordPressを使用していると、Wordpressのちょっとした動きを変更したいという場合があります。

例えば、投稿記事一覧が表示される直前に、表示される記事数に制限を設けたい場合などですね。

そのような場合は、Wordpressに用意されているフックという機能を利用することができます。

フックとは、Wordpress内で何かしらのイベントが発生する度に呼ばれるもので、Wordpressにデフォルトで用意されている関数に変更を加えたい場合などに、そのフックに対して指示をすることで、Wordpressの動作を変更することができます。

フックにはアクションフックフィルターフックの2種類があります。

それぞれの違いや使い方について見ていきましょう。

スポンサーリンク
レクタングル大

アクションフックとフィルターフックの違い

アクションフックはWordPress上で特定のイベントが発生した際に起動されるフックです。

例えば投稿の公開や、テーマの変更・管理画面が表示される際に呼ばれます。

一方、フィルターフックはデータベースにデータが追加される時やブラウザーでテキストが出力される時に起動されるフックで、主にテキストデータに変更を加える目的で使用されます。

フックの使い方

アクションフックとフィルターフックの使用方法は、関数名に違いはありますがどちらも同じパラメーターで呼ぶことができます。

フックの種類がアクションフックの場合はadd_actionを使用し、フィルターフックの場合はadd_fileterを使用するのが良いでしょう。

アクションフックの場合

add_action ( 'フックの名前', '作成した関数名', [優先順位], [引数] );

フィルターフックの場合

add_fileter( 'フックの名前', '作成した関数名', [優先順位], [引数] );

パラメーターのうち、フックの名前作成した関数名必須のパラメーターですが、優先順位引数任意で指定することのできるパラメーターとなります。

アクションフックとフィルターフックにどんなものがあるかはCodexで確認することができます。

プラグイン API/アクションフック一覧

プラグイン API/フィルターフック一覧

実際に使用例を見ていきましょう。

フックの使用例

アクションフック

アクションフックの使用例です。

WordPress上部の管理バーにあるロゴを、アクションフックを使って非表示にしてみましょう。

functions.phpに、以下のコードを追加しましょう。

wp_before_admin_bar_renderをフックし、管理バーが表示される前にロゴを削除する関数を実行しています。

function remove_logo_from_admin_bar() {
    global $wp_admin_bar;

    $wp_admin_bar->remove_menu('wp-logo');
}
add_action( 'wp_before_admin_bar_render', 'remove_logo_from_admin_bar' ); 

管理バーからロゴが削除されていることを確認しましょう。

フィルターフック

フィルターフックを使ってみましょう。

Responsiveテーマのブログアーカイブページではデフォルトで本文を40文字抜粋する仕様になっています。

この抜粋の文字数を、フィルターフックを使って20文字へ変更してみましょう。

functions.phpに、以下のコードを追加しましょう。

excerpt_lengthをフックし、抜粋の文字数を20文字へ変更しています。

function custom_excerpt_length( $length ) {
     return 20; 
}   
add_filter( 'excerpt_length', 'custom_excerpt_length', 999 );

変更を確認しましょう。

20文字で抜粋されるようになりましたね。

以上、「Wordpress開発で覚えておきたいアクションフックとフィルターフック」でした。

スポンサーリンク
レクタングル大
レクタングル大

シェアする

フォローする