Nullyのぶろぐ

仙台から東京へ転勤したエンジニアのブログ

テーマを有効化したときにアクションフックを呼び出す

前からずっと気になっていて、どうすんだろー。と悩んでいましたが、やっと解決したので覚書をば。

こんな感じ

WordPressはたくさんのアクションフックを持っていますが、その中でも「テーマを有効化したとき」のフックポイントが実は存在しません。

なので、テーマ側でサポートするかプラグインでサポートする必要があります。

今回はテーマ側でサポートするように作ってみます。

テーマの名前はとりあえず「Sample」というテーマで作っているとします。

以下にサンプルコードを。

 

function sample_theme_activate() {

global $pagenow;

if(is_admin() && $pagenow == "themes.php" && isset($_GET["activated"]))

do_action("sample_theme_activate");

}

add_action("init", "sample_theme_activate");

// ここからテーマを有効化した時に実行される関数を定義します。

function sample_theme_activated() {

// ここにテーマが有効化された時のコードを書きます。

}

add_action("sample_theme_activate", "sample_theme_activated");

 

こんな感じでテーマが有効化されたときにアクションリストに登録されたアクションを実行することが出来ます。

ちなみに

テーマが無効化されたときのフックって無いの?と思いますが、実はこっちは実装されています。

アクションフック名は「switch_theme」として登録されており、このフックポイントに登録してあげることで、テーマが無効化されたとき(無効化言うよりは、現在のテーマから離れた際)に実行されます。

つまり、

テーマAからテーマBに切り替わりますよ!

というタイミングで実行されます。

最後に

テーマが有効化された際のフックというのは使いどころがかなり限られているかもしれませんが、意外と「ココ!」というのがあったりもします。

こういうちょっとしたところでもフックポイントがあればなぁ...なんて思ったりもします。