web-dev-qa-db-ja.com

WordPressテーマ起動フック?

私は、このテーマがアクティブになっているかどうかを確認するための多くのトリックを知っています。私はインターネットを精査しました。私はそのコードの再ペーストを探していません。私が探しているのは天気かどうか3.3-3.5はtheme_initに何かをする新しい機能をリリースしました、私はある種のフックを見ました、しかし私はコーデックスでテーマがあった後に物事を扱うこと初期化されました。

誰か知ってる?

3
TheWebs

after_setup_themeフックを探しているかもしれません:

http://codex.wordpress.org/Plugin_API/Action_Reference/after_setup_theme

0
birgire

この質問につまずく人のために。あなたがフックできるアクションがあります(3.3.0が追加されました)。それは新しいテーマのアクティベーション時にのみ起動されます:after_switch_theme

add_action('after_switch_theme', 'mytheme_setup_options');

function mytheme_setup_options () {
  //doing a thing...
}

http://codex.wordpress.org/Plugin_API/Action_Reference/after_switch_theme

テーマの 非アクティブ化 で何かをするには、姉妹アクションを使うことができます: switch_theme

16
sleepingkiwi

テーマのプレビュー機能では、テーマが「有効化」されていなくても機能する必要があるため、テーマ有効化フックが存在することはほとんどありません。

3
Mark Kaplun

@sleepingkiwiメソッドを試した後、私は問題に遭遇しました。クライアントは別のテーマを試してみるかもしれません(ちょっとの間でも)、これは私たちが作成した "on theme activation"フックが2回実行されたという事実のために問題を引き起こすかもしれません。

最適な方法は、WordPressの "update_option"と連動してafter_switch_themeを使用し、アクティベーション通知を保存して後で確認することです。

例:

add_action('after_switch_theme', 'sgx_activation_hook');
function sgx_activation_hook() {
    if(get_option('SOMEPREFIX_theme_activated') != '1') {

        update_option( 'SOMEPREFIX_theme_activated', '1' );

        // RUN THEME_ACTIVATION STUFF HERE

    }
}

お役に立てれば。

1
Sagive SEO