Hook per l'Attivazione del Tema

3 gen 2011, 10:14:35
Visualizzazioni: 14.6K
Voti: 14

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?

3
Commenti

Utilizzare 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 essere obbligati a comunicarlo allo sviluppatore o a 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... non hai il diritto di imporre i tuoi scopi su di lei."

Chip Bennett Chip Bennett
19 lug 2011 23:23:10

Questa è una pessima idea. Da sviluppatore di plugin inesperto all'inizio, ho implementato qualcosa di simile senza pensare alle conseguenze per me o per i miei utenti. 1. Questo viola la privacy dell'utente. 2. Se il tuo tema è ampiamente distribuito, riceverai più email di quante tu possa gestire. 3. Se il punto #2 è vero, a seconda di dove ospiti la tua email, il tuo account potrebbe essere considerato in violazione dei termini di utilizzo. Il mio account email è stato sospeso per un po' proprio per questo motivo.

Brian Fegter Brian Fegter
7 ago 2013 22:41:34

@BrianFegter Assolutamente d'accordo. Ero solo nella mia fase di apprendimento iniziale quando ho provato a fare questo. Grazie per aver condiviso le tue preoccupazioni. La cosa più bella di StackOverflow e StackExchange è che quando guardi alle tue domande dell'anno passato, ti rendi conto di quanto sei cresciuto nel tempo :-)

Atif Atif
8 ago 2013 23:52:52
Tutte le risposte alla domanda 5
2
14

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/

18 gen 2011 19:54:21
Commenti

@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.

Jan Fabry Jan Fabry
25 gen 2011 10:58:16

Il codice di Krishna è quello nella risposta di Benny

brasofilo brasofilo
21 giu 2012 16:44:02
1
13

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);
}
28 gen 2011 12:19:47
Commenti

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...

brasofilo brasofilo
21 giu 2012 16:54:09
1

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

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.

3 gen 2011 13:17:32
Commenti

È così? Solo l'URL così posso sapere dove è installato?

Atif Atif
3 gen 2011 14:07:27
0

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

5 gen 2015 05:41:26
0

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.

12 gen 2013 21:40:54