Hook per l'Attivazione del Tema
Vorrei scrivere una funzione per inviarmi via email l'URL del sito web quando il mio tema viene attivato.
Qual è l'hook che viene attivato quando il tema viene attivato?

Ho scritto un codice che fornisce degli hook affidabili per l'attivazione/disattivazione del tema. Per favore, dategli un'occhiata e fatemi sapere cosa ne pensate!
http://www.krishnakantsharma.com/2011/01/activationdeactivation-hook-for-wordpress-theme/

@Krisha Kant Sharma: Quel codice sembra promettente, ma potresti copiarlo nella tua risposta? In questo modo continuerà a esistere se il tuo blog dovesse cambiare posizione o per qualche motivo andasse offline.

Ho questo codice qui, basta nominare il file theme_activation_hook.php come sul sito web e copiare questo.
<?php
/**
* Fornisce un hook di attivazione/disattivazione per i temi WordPress.
*
* @author Krishna Kant Sharma (http://www.krishnakantsharma.com)
*
* Utilizzo:
* ----------------------------------------------
* Includi questo file nel codice del tuo tema.
* ----------------------------------------------
* function my_theme_activate() {
* // codice da eseguire all'attivazione del tema
* }
* wp_register_theme_activation_hook('mytheme', 'my_theme_activate');
*
* function my_theme_deactivate() {
* // codice da eseguire alla disattivazione del tema
* }
* wp_register_theme_deactivation_hook('mytheme', 'my_theme_deactivate');
* ----------------------------------------------
*
*
*/
/**
*
* @desc registra un hook di attivazione del tema
* @param string $code : Codice del tema. Può essere la cartella base del tuo tema. Es. se il tuo tema è nella cartella 'mytheme' allora il codice sarà 'mytheme'
* @param callback $function : Funzione da chiamare quando il tema viene attivato.
*/
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 di disattivazione
* @param string $code : Codice del tema. Deve corrispondere al valore fornito nella funzione wp_register_theme_activation_hook come $code
* @param callback $function : Funzione da chiamare quando il tema viene disattivato.
*/
function wp_register_theme_deactivation_hook($code, $function) {
// memorizza la funzione in una variabile globale specifica per il codice
$GLOBALS["wp_register_theme_deactivation_hook_function" . $code]=$function;
// crea una funzione runtime che eliminerà l'opzione impostata durante l'attivazione di questo tema e chiamerà la funzione di disattivazione fornita in $function
$fn=create_function('$theme', ' call_user_func($GLOBALS["wp_register_theme_deactivation_hook_function' . $code . '"]); delete_option("theme_is_activated_' . $code. '");');
// aggiunge la funzione creata sopra all'hook switch_theme. Questo hook viene chiamato quando l'amministratore cambia il tema.
// A causa dell'implementazione del core di WordPress, questo hook può essere ricevuto solo dal tema attualmente attivo (che sta per essere disattivato poiché l'amministratore ne ha scelto un altro.
// Il tuo tema può percepire questo hook come un hook di disattivazione.
add_action("switch_theme", $fn);
}

L'autore di questo codice (Krishna Kant Sharma) ha anche lasciato una risposta con un link alla sua fonte. Forse quando Benny ha risposto a questa domanda, non era ancora abbastanza esperto per modificare semplicemente la risposta di Krishna e aggiungervi il codice, da qui il mio voto negativo...

Non esiste un hook specifico per questo. Ho visto un paio di approcci:
- hook
switch_theme
con controllo del tuo tema - Eseguire codice di "Setup" solo all'attivazione? - rilevare la pagina di amministrazione dopo l'attivazione del tema - Impostare opzioni all'attivazione dei Temi
Voglio far notare che inviare email con qualsiasi informazione senza il consenso dell'utente (e l'esecuzione di codice all'attivazione non offre l'opportunità di richiederlo) può essere considerato inappropriato.

WordPress ora fornisce questo hook come after_switch_theme
. Puoi usarlo in questo modo:
add_action('after_switch_theme', 'my_theme_activation');
function my_theme_activation () {
// ESEGUI TUTTE LE OPERAZIONI
}
Puoi utilizzare l'hook switch_theme
per eseguire codice anche durante la disattivazione del tema.
Fonte: http://codex.wordpress.org/Plugin_API/Action_Reference/after_switch_theme

Inserisci questo codice all'inizio del tuo file functions.php
<?php if ( is_admin() && isset($_GET['activated'] ) && $pagenow == "themes.php" ) {
// esegui le tue operazioni
$url = get_site_url();
// Il messaggio
$message = "un nuovo tema wordpress è stato attivato su $url ";
// Nel caso una delle nostre righe superi i 70 caratteri, usiamo wordwrap()
$message = wordwrap($message, 70, "\r\n");
// Invia
wp_mail('mail@tuodominio.com', 'tema attivato', $message);
}
?>
sostituisci mail@tuodominio.com
con il tuo indirizzo email.
Spero sia utile.
