Tema Ativar Gancho

13

Eu gostaria de escrever uma função para me enviar o URL do site quando meu tema for ativado.

Qual é o gancho iniciado quando o tema é ativado?

    
por Atif Mohammed Ameenuddin 03.01.2011 / 09:14

5 respostas

12

Eu tenho esse código aqui apenas nomeie o arquivo theme_activation_hook.php como no site e copie isso.

<?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);
}
    
por Benny 28.01.2011 / 11:19
14

Eu escrevi um código que fornece ganchos confiáveis de tema de ativação / desativação. Por favor, confira e deixe-me saber o que vocês acham!

enlace

    
por Krishna Kant Sharma 18.01.2011 / 18:54
8

Não há gancho especializado para isso. Eu vi algumas abordagens:

Quero observar que o envio de qualquer informação por e-mail sem o consentimento do usuário (e a execução de qualquer ação na ativação não tem a oportunidade de solicitar tal) pode ser visto como impróprio.

    
por Rarst 03.01.2011 / 12:17
3

O Wordpress agora fornece esse gancho como after_switch_theme . Você pode usá-lo assim:

add_action('after_switch_theme', 'my_theme_activation');

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

Você pode usar o gancho switch_theme para executar o código no tema desativação também.

Fonte: enlace

    
por Christian Varga 05.01.2015 / 04:41
0

Coloque este código na parte superior do seu 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('mail@yourdomain.com', 'theme geactiveerd', $message);
}

?>

substitua mail@yourdomain.com pelo seu próprio endereço de e-mail.

Espero que ajude.

    
por APR Webdesign 12.01.2013 / 20:40