Cum să folosești hook-ul de activare a temei WordPress pentru notificări prin email
Aș dori să scriu o funcție care să-mi trimită prin email URL-ul site-ului când tema mea este activată.
Care este hook-ul inițiat când tema este activată?

Am scris un cod care oferă cârlige (hooks) de activare/dezactivare fiabile pentru teme. Vă rog să îl verificați și să-mi spuneți ce părere aveți!
http://www.krishnakantsharma.com/2011/01/activationdeactivation-hook-for-wordpress-theme/

@Krisha Kant Sharma: Codul acesta arată promițător, dar ai putea să-l copiezi în răspunsul tău? Astfel, va rămâne disponibil chiar dacă blogul tău își va schimba locația sau din anumite motive va deveni indisponibil.

Am acest cod aici, doar denumește fișierul theme_activation_hook.php ca pe site și copiază acest conținut.
<?php
/**
* Furnizează un hook de activare/dezactivare pentru temele WordPress.
*
* @author Krishna Kant Sharma (http://www.krishnakantsharma.com)
*
* Utilizare:
* ----------------------------------------------
* Includeți acest fișier în codul temei dumneavoastră.
* ----------------------------------------------
* function my_theme_activate() {
* // cod de executat la activarea temei
* }
* wp_register_theme_activation_hook('mytheme', 'my_theme_activate');
*
* function my_theme_deactivate() {
* // cod de executat la dezactivarea temei
* }
* wp_register_theme_deactivation_hook('mytheme', 'my_theme_deactivate');
* ----------------------------------------------
*
*
*/
/**
*
* @desc înregistrează un hook de activare a temei
* @param string $code : Codul temei. Poate fi folderul de bază al temei. Ex: dacă tema este în folderul 'mytheme', codul va fi 'mytheme'
* @param callback $function : Funcția de apelat când tema este activată.
*/
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 înregistrează un hook de dezactivare
* @param string $code : Codul temei. Trebuie să corespundă cu valoarea furnizată în funcția wp_register_theme_activation_hook ca $code
* @param callback $function : Funcția de apelat când tema este dezactivată.
*/
function wp_register_theme_deactivation_hook($code, $function) {
// stochează funcția într-o variabilă globală specifică codului
$GLOBALS["wp_register_theme_deactivation_hook_function" . $code]=$function;
// creează o funcție runtime care va șterge opțiunea setată la activarea acestei teme și va apela funcția de dezactivare furnizată în $function
$fn=create_function('$theme', ' call_user_func($GLOBALS["wp_register_theme_deactivation_hook_function' . $code . '"]); delete_option("theme_is_activated_' . $code. '");');
// adaugă funcția creată mai sus la hook-ul switch_theme. Acest hook este apelat când administratorul schimbă tema.
// Datorită implementării din nucleul WordPress, acest hook poate fi primit doar de tema activă curent (care va fi dezactivată în urma alegerii unei alte teme).
// Tema dumneavoastră poate percepe acest hook ca un hook de dezactivare.
add_action("switch_theme", $fn);
}

Autorul acestui cod (Krishna Kant Sharma) a lăsat și un răspuns cu un link către sursa sa. Poate că în momentul în care Benny a răspuns la această întrebare, nu era suficient de experimentat pentru a simplifica editarea răspunsului lui Krishna și adăugarea codului în el, de aceea am dat vot negativ...

Nu există un hook specializat pentru asta. Am văzut câteva abordări:
switch_theme
hook cu verificarea temei tale - Execută cod „Setup” doar la activare?- detectarea paginii de administrare după activarea temei - Setare opțiuni la activarea Temelor
Vreau să menționez că trimiterea de emailuri cu orice informații fără consimțământul utilizatorului (și rularea oricărui cod la activare nu oferă oportunitatea de a cere acest lucru) poate fi considerată inadecvată.

WordPress oferă acum acest hook sub denumirea after_switch_theme
. Îl puteți utiliza astfel:
add_action('after_switch_theme', 'my_theme_activation');
function my_theme_activation () {
// FACETI TOATE MODIFICARILE NECESARE
}
De asemenea, puteți utiliza hook-ul switch_theme
pentru a rula cod la dezactivarea temei.
Sursa: http://codex.wordpress.org/Plugin_API/Action_Reference/after_switch_theme

Plasați acest cod în partea de sus a fișierului functions.php
<?php if ( is_admin() && isset($_GET['activated'] ) && $pagenow == "themes.php" ) {
// faci operațiunile tale
$url = get_site_url();
// Mesajul
$message = "un nou temă WordPress a fost activată pe $url ";
// În cazul în care oricare dintre linii depășește 70 de caractere, ar trebui să folosim wordwrap()
$message = wordwrap($message, 70, "\r\n");
// Trimite
wp_mail('mail@yourdomain.com', 'temă activată', $message);
}
?>
înlocuiți mail@yourdomain.com
cu adresa dvs. de email.
Sper că vă ajută.
