web-dev-qa-db-de.com

WordPress Theme Aktivierungshaken?

Ich kenne die vielen Tricks, um zu sehen, ob das Thema aktiviert ist, ich habe das Internet durchsucht. Ich möchte diesen Code nicht erneut einfügen. Was ich aber suche ist Wetter oder nicht 3.3-3.5 hat eine neue Funktion veröffentlicht, die etwas auf theme_init ausführt. Ich habe eine Art Haken gesehen, aber ich kann mich nicht erinnern, wo im Codex Dinge zu tun sind, die nach einem Thema liegen wurde initialisiert ..

Weiß jemand?

3
TheWebs

Möglicherweise suchen Sie nach dem Haken after_setup_theme:

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

0
birgire

Für alle, die über diese Frage stolpern; Es gibt eine Aktion, in die Sie sich einklinken können (3.3.0 hinzugefügt), die nur bei Aktivierung eines neuen Themas ausgelöst wird: 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

Um etwas an Deaktivierung eines Themas zu tun, können Sie die Schwesteraktion verwenden: switch_theme

16
sleepingkiwi

Mit den Themenvorschau-Funktionen ist es unwahrscheinlich, dass es jemals einen Haken für die Themenaktivierung geben wird, da Themen auch dann funktionieren müssen, wenn sie nicht "aktiviert" sind.

3
Mark Kaplun

Nachdem ich die @sleepingkiwi Methode ausprobiert habe, bin ich auf ein Problem gestoßen. Ein Client kann ein anderes Thema ausprobieren (auch für einen Moment). Dies kann zu einem Problem führen, da der von uns erstellte Hook "On Theme Activation" zweimal ausgeführt wurde.

Die beste Methode ist, after_switch_theme zusammen mit Wordpress "update_option" zu verwenden, um eine Aktivierungsmeldung zu speichern und später zu überprüfen, um diese Methode kugelsicher zu machen.

Beispiel:

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

    }
}

Hoffe das hilft.

1
Sagive SEO