Tema Activar Hook

13

Me gustaría escribir una función para enviarme por correo electrónico la URL del sitio web cuando mi tema esté activado.

¿Cuál es el enlace que se inicia cuando se activa el tema?

    
pregunta Atif Mohammed Ameenuddin 03.01.2011 - 09:14

5 respuestas

12

Tengo ese código aquí, solo nombre el archivo theme_activation_hook.php como en el sitio web y copia esto.

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

He escrito un código que proporciona enlaces de tema de activación / desactivación confiables. ¡Por favor, compruébalo y hazme saber lo que piensan!

enlace

    
respondido por el Krishna Kant Sharma 18.01.2011 - 18:54
8

No hay un gancho especializado para esto. He visto un par de enfoques:

Quiero señalar que enviar por correo electrónico cualquier información sin el consentimiento del usuario (y ejecutar cualquier cosa en la activación no tiene oportunidad de solicitarla) puede verse como inadecuado.

    
respondido por el Rarst 03.01.2011 - 12:17
3

Wordpress ahora proporciona este enlace como after_switch_theme . Puedes usarlo así:

add_action('after_switch_theme', 'my_theme_activation');

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

También puede utilizar el gancho switch_theme para ejecutar el código en el tema desactivación .

Fuente: enlace

    
respondido por el Christian Varga 05.01.2015 - 04:41
0

Coloque este código en la parte superior de su 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);
}

?>

reemplaza mail@yourdomain.com con tu propia dirección de correo electrónico.

Espero que ayude.

    
respondido por el APR Webdesign 12.01.2013 - 20:40

Lea otras preguntas en las etiquetas