
WordPressカスタマイズの必須知識!フックについて理解しよう
CMSの中でも人気のWordPress。数多くのテーマ(テンプレート)やプラグインがありますが、デザインや機能にこだわるのであればカスタマイズが必要です。
WordPressのテーマやプラグインをカスタマイズするには、特有のテンプレート構造や記述について理解しておくことが必要になってきます。その中でもキーになるのが、フックと呼ばれる機能です。
本記事では、WordPressをカスタマイズするときに必要になるフックの基礎知識について解説していければと思います。フックの基本や、簡単な使い方についてもご紹介していきます。
フックの基礎知識
フックとは?
フックとは、WordPressにはじめから備わっている機能の一つです。フィルターフックとアクションフックに分けられます。記事の後半では、それぞれの使い方を順に解説していきます。
それでは、フックについて簡単に解説しましょう。フックとは、任意のタイミングで指定した処理(関数)を実行するための機能のことです。任意のタイミングとは、記事を公開したり、タイトルを表示した時のこと。処理とは、データベースを変更したり、メールを送信するなどの機能のこと。つまり、フックを使うと自由なタイミングで指定した処理を実行できるのです。
サイトの機能だけでなく、デザイン面でも思い通りに作れるようになるため、WordPressテーマやプラグインのカスタマイズをするのであればぜひ使いこなしたい機能と言えます。
フックの使い方
さて、ここからが本題です。フックの使い方について見ていきましょう。フックには2種類あると言いました。フィルターフックとアクションフックの2つです。順に解説していきます。
フィルターフック
フィルターフックを使うには、add_filter関数を使います。パラメータを含めると、下のようになります。
add_filter( $tag, $function_to_add, $priority, $accepted_args ); |
指定したフィルターフックに対して、任意の関数を指定します。詳細は、下記の公式ページをご確認ください。
add_filterの逆で、remove_filterもあります。これを使うと、指定したフィルターフックを取り消すことができます。
フィルターフックの具体例
moreタグのリンクを修正する
moreタグを使うと、リンクの末尾に「#more-3」などの文字列が付加されます。これを削除する方法です。
function customize_more_link( $output ) {
$output = preg_replace('/#more-[\d]+/i', '', $output );
return $output;
}
add_filter( 'the_content_more_link', 'customize_more_link' );
記事本文にpタグがつかないようにする
記事本文に自動的に付加されるタグ(pタグ)を削除する方法です。HTMLタグを自分でコントロールしたい場合に使えます。
remove_filter( ‘the_content’, ‘wpautop’ );
アクションフック
次は、アクションフックです。アクションフックの場合も、基本的にはフィルターフックと同様です。add_action関数を使って、下のように記述します。
add_action( $hook, $function_to_add, $priority, $accepted_args ); |
アクションフックと、その時に実行する関数を指定します。下記、公式ページによる詳細です。
add_actionも、アクションフックを取り除くremove_action関数が用意されています。
アクションフックの具体例
管理画面にメニューを追加する
管理画面の左側には、「投稿」や「外観」などのメニューが表示されています。アクションフックを使うと、この部分に新規にメニューを追加することができます。例えば、functions.phpに下記のコードを書くと「設定」内に新しいサブメニューが追加できます。
add_action ('admin_menu','my_options_menu');
function my_options_menu(){
add_options_page('メニューページのタイトル', 'メニューの名前', , 'my-options-menu', 'new_menu_page');
}
function new_menu_page() {
echo '
echo ‘
設定画面に表示する内容を書く
‘;
echo ‘
‘;
}
WordPressのバージョン情報を削除する
WordPressのheadタグ内から、バージョン情報を削除する方法です。表示する意味も特にありませんので、基本的には消してしまった方がよいです。
remove_action('wp_head','wp_generator');
あとがき
フックをうまく使って、WordPressのカスタマイズに活かしていっていただければと思います。なおWordPress Codexには、フィルターフックやアクションフックの一覧もあります。どういったことができるのか、一度目を通しておくといいかもしれません。