Tema Attiva Hook


15

Vorrei scrivere una funzione per inviarmi via email l'URL del sito Web quando il mio tema è attivato.

Qual è l'hook avviato quando il tema è attivato?


5
L'uso di un hook di attivazione del tema per questo scopo è assolutamente sbagliato : "La libertà di eseguire il programma significa la libertà ... di usarlo ... per qualsiasi tipo di ... scopo, senza che sia richiesto di comunicarlo con lo sviluppatore o qualsiasi altra entità specifica . In questa libertà, è lo scopo dell'utente che conta, non lo scopo dello sviluppatore ; tu come utente sei libero di eseguire il programma per i tuoi scopi e se lo distribuisci a qualcun altro ... sei non ha il diritto di imporla su di te . "
Chip Bennett,

1
Questa è una cattiva idea. Come sviluppatore di plugin ingenuo all'inizio, ho implementato qualcosa di simile senza pensare alle conseguenze per me o per i miei utenti. 1. Ciò viola la privacy di un utente. 2. Se il tuo tema è ampiamente distribuito, riceverai più e-mail di quante possiate gestire. 3. Se il numero 2 è vero, a seconda di dove si ospita la tua e-mail, il tuo account potrebbe essere interpretato come una violazione dei termini di utilizzo. Il mio account di posta elettronica è stato chiuso per un po 'per questo motivo.
Brian Fegter,

@BrianFegter Ha assolutamente senso. Ero solo nella mia fase iniziale di apprendimento quando stavo provando questo. Grazie per aver condiviso le preoccupazioni. Il fatto più grande di StackOverflow e StackExchange è che quando guardi le tue domande nell'ultimo anno, ti rendi conto di quanto hai sviluppato di volta in volta :-)
Atif Mohammed Ameenuddin

Risposte:


13

Ho quel codice qui basta nominare il file theme_activation_hook.php come sul sito Web e copiarlo.

<?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);
}

1
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 abbastanza esperto da modificare semplicemente la risposta di Krishna e aggiungere il codice ad essa, quindi il mio
voto negativo

14

Ho scritto un codice che fornisce un hook affidabile per l'attivazione / disattivazione del tema. Per favore, dai un'occhiata e fammi sapere cosa ne pensate voi ragazzi!

http://www.krishnakantsharma.com/2011/01/activationdeactivation-hook-for-wordpress-theme/


@Krisha Kant Sharma: quel codice sembra promettente, ma potresti copiarlo nella tua risposta? Quindi continuerà a esistere se il tuo blog cambia posizione o per qualche ragione non è in linea.
Jan Fabry,

1
Il codice di Krishna è quello nella risposta di Benny
brasofilo,

8

Non esiste un hook specializzato per questo. Ho visto un paio di approcci:

Voglio notare che l'invio tramite e-mail di qualsiasi informazione senza il consenso dell'utente (e l'esecuzione di qualsiasi operazione di attivazione non ha l'opportunità di richiedere tale) può essere considerato inappropriato.


È? solo l'URL in modo che io possa sapere dove è installato?
Atif Mohammed Ameenuddin,


0

Inserisci questo codice in alto nel tuo 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);
}

?>

sostituire mail@yourdomain.com con il tuo indirizzo email.

Spero che sia d'aiuto.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.