Hook de activación de tema en WordPress - Cómo recibir notificaciones
Me gustaría escribir una función para que me envíe por email la URL del sitio web cuando se active mi tema.
¿Cuál es el hook que se ejecuta cuando se activa un tema?

He escrito un código que proporciona ganchos (hooks) confiables de activación/desactivación para temas. Por favor, échale un vistazo y dime qué opinas.
http://www.krishnakantsharma.com/2011/01/activationdeactivation-hook-for-wordpress-theme/

@Krisha Kant Sharma: Ese código parece prometedor, pero ¿podrías copiarlo en tu respuesta? Así seguirá existiendo si tu blog cambia de ubicación o, por alguna razón, deja de estar disponible.

Tengo este código aquí, solo nombra el archivo como theme_activation_hook.php como en el sitio web y copia esto.
<?php
/**
* Proporciona un hook de activación/desactivación para temas de WordPress.
*
* @author Krishna Kant Sharma (http://www.krishnakantsharma.com)
*
* Uso:
* ----------------------------------------------
* Incluye este archivo en el código de tu tema.
* ----------------------------------------------
* function my_theme_activate() {
* // código a ejecutar durante la activación del tema
* }
* wp_register_theme_activation_hook('mytheme', 'my_theme_activate');
*
* function my_theme_deactivate() {
* // código a ejecutar durante la desactivación del tema
* }
* wp_register_theme_deactivation_hook('mytheme', 'my_theme_deactivate');
* ----------------------------------------------
*
*
*/
/**
*
* @desc registra un hook de activación de tema
* @param string $code : Código del tema. Puede ser la carpeta base de tu tema. Ej. si tu tema está en la carpeta 'mytheme' entonces el código será 'mytheme'
* @param callback $function : Función a llamar cuando el tema se active.
*/
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 registra un hook de desactivación
* @param string $code : Código del tema. Debe coincidir con el valor proporcionado en wp_register_theme_activation_hook como $code
* @param callback $function : Función a llamar cuando el tema se desactive.
*/
function wp_register_theme_deactivation_hook($code, $function) {
// almacena la función en un global específico del código
$GLOBALS["wp_register_theme_deactivation_hook_function" . $code]=$function;
// crea una función en tiempo de ejecución que eliminará la opción establecida durante la activación de este tema y llamará a la función de desactivación proporcionada en $function
$fn=create_function('$theme', ' call_user_func($GLOBALS["wp_register_theme_deactivation_hook_function' . $code . '"]); delete_option("theme_is_activated_' . $code. '");');
// añade la función creada anteriormente al hook de acción switch_theme. Este hook se llama cuando el administrador cambia el tema.
// Debido a la implementación del núcleo de WordPress, este hook solo puede ser recibido por el tema actualmente activo (que será desactivado ya que el administrador ha elegido otro.
// Tu tema puede percibir este hook como un hook de desactivación.
add_action("switch_theme", $fn);
}

El autor de este código (Krishna Kant Sharma) también dejó una respuesta con un enlace a su fuente. Quizás para cuando Benny respondió esta pregunta, no tenía suficiente conocimiento como para simplemente editar la respuesta de Krishna y agregar el código a ella, de ahí mi voto negativo...

No existe un hook especializado para esto. He visto un par de enfoques:
- El hook
switch_theme
con verificación para tu tema - ¿Ejecutar código de "Configuración" solo en la activación? - Detectar la página de administración después de la activación del tema - Establecer opciones al activar temas
Quiero señalar que enviarte por correo electrónico cualquier información sin el consentimiento del usuario (y ejecutar cualquier cosa en la activación no da oportunidad de solicitar esto) puede ser visto como inapropiado.

WordPress ahora proporciona este hook como after_switch_theme
. Puedes usarlo así:
add_action('after_switch_theme', 'my_theme_activation');
function my_theme_activation () {
// HACER TODAS LAS COSAS
}
También puedes usar el hook switch_theme
para ejecutar código al desactivar el tema.
Fuente: http://codex.wordpress.org/Plugin_API/Action_Reference/after_switch_theme

Coloca este código al principio de tu archivo functions.php
<?php if ( is_admin() && isset($_GET['activated'] ) && $pagenow == "themes.php" ) {
// hacer lo que necesites
$url = get_site_url();
// El mensaje
$message = "un nuevo tema de WordPress se ha activado en $url ";
// En caso de que alguna línea supere los 70 caracteres, usamos wordwrap()
$message = wordwrap($message, 70, "\r\n");
// Enviar
wp_mail('mail@yourdomain.com', 'tema activado', $message);
}
?>
reemplaza mail@yourdomain.com
con tu propia dirección de correo electrónico.
Espero que te ayude.
