Theme Activer le crochet

13

Je voudrais écrire une fonction pour m'envoyer par courrier électronique l'URL du site Web lorsque mon thème est activé.

Quel est le hook lancé quand le thème est activé?

    
posée Atif Mohammed Ameenuddin 03.01.2011 - 09:14

5 réponses

12

J'ai ce code ici, il suffit de nommer le fichier theme_activation_hook.php comme sur le site Web et de le copier.

<?php
/**
 * Provides activation/deactivation hook for wordpress theme.
 *
 * @author Krishna Kant Sharma (http://www.krishnakantsharma.com)
 *
 * Usage:
 * ----------------------------------------------
 * Include this file in your theme code.
 * ----------------------------------------------
 * function my_theme_activate() {
 *    // code to execute on theme activation
 * }
 * wp_register_theme_activation_hook('mytheme', 'my_theme_activate');
 *
 * function my_theme_deactivate() {
 *    // code to execute on theme deactivation
 * }
 * wp_register_theme_deactivation_hook('mytheme', 'my_theme_deactivate');
 * ----------------------------------------------
 * 
 * 
 */

/**
 *
 * @desc registers a theme activation hook
 * @param string $code : Code of the theme. This can be the base folder of your theme. Eg if your theme is in folder 'mytheme' then code will be 'mytheme'
 * @param callback $function : Function to call when theme gets activated.
 */
function wp_register_theme_activation_hook($code, $function) {
    $optionKey="theme_is_activated_" . $code;
    if(!get_option($optionKey)) {
        call_user_func($function);
        update_option($optionKey , 1);
    }
}

/**
 * @desc registers deactivation hook
 * @param string $code : Code of the theme. This must match the value you provided in wp_register_theme_activation_hook function as $code
 * @param callback $function : Function to call when theme gets deactivated.
 */
function wp_register_theme_deactivation_hook($code, $function) {
    // store function in code specific global
    $GLOBALS["wp_register_theme_deactivation_hook_function" . $code]=$function;

    // create a runtime function which will delete the option set while activation of this theme and will call deactivation function provided in $function
    $fn=create_function('$theme', ' call_user_func($GLOBALS["wp_register_theme_deactivation_hook_function' . $code . '"]); delete_option("theme_is_activated_' . $code. '");');

    // add above created function to switch_theme action hook. This hook gets called when admin changes the theme.
    // Due to wordpress core implementation this hook can only be received by currently active theme (which is going to be deactivated as admin has chosen another one.
    // Your theme can perceive this hook as a deactivation hook.
    add_action("switch_theme", $fn);
}
    
réponse donnée Benny 28.01.2011 - 11:19
14

J'ai écrit un code qui fournit des crochets de thème d'activation / désactivation fiables. S'il vous plaît vérifier et laissez-moi savoir ce que vous en pensez les gars!

enlace

    
réponse donnée Krishna Kant Sharma 18.01.2011 - 18:54
8

Il n'y a pas de crochet spécialisé pour cela. J'ai vu plusieurs approches:

Je souhaite noter que l'envoi par courrier électronique d'informations sans le consentement de l'utilisateur (et que l'exécution de n'importe quoi lors de l'activation n'a aucune possibilité de demander de telles informations) peut être considéré comme inapproprié.

    
réponse donnée Rarst 03.01.2011 - 12:17
3

Wordpress fournit maintenant ce hook sous la forme after_switch_theme . Vous pouvez l'utiliser comme suit:

add_action('after_switch_theme', 'my_theme_activation');

function my_theme_activation () {
  // DO ALL THE THINGS
}

Vous pouvez également utiliser le crochet switch_theme pour exécuter du code sur le thème désactivation .

Source: enlace

    
réponse donnée Christian Varga 05.01.2015 - 04:41
0

Placez ce code en haut de votre functions.php

<?php if ( is_admin() && isset($_GET['activated'] ) && $pagenow == "themes.php" ) {
// do your stuff
$url = get_site_url();
// The message
$message = "a new wordpress theme is activated on $url ";

// In case any of our lines are larger than 70 characters, we should use wordwrap()
$message = wordwrap($message, 70, "\r\n");

// Send
wp_mail('[email protected]', 'theme geactiveerd', $message);
}

?>

remplacez [email protected] par votre propre adresse e-mail.

J'espère que ça aide.

    
réponse donnée APR Webdesign 12.01.2013 - 20:40

Lire d'autres questions sur les étiquettes