Cum să folosești hook-ul de activare a temei WordPress pentru notificări prin email

3 ian. 2011, 10:14:35
Vizualizări: 14.6K
Voturi: 14

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ă?

3
Comentarii

Folosirea unui hook de activare a temei în acest scop este absolut greșit: "Libertatea de a rula programul înseamnă libertatea... de a-l folosi... în orice scop..., fără a fi obligat să comunici despre aceasta cu dezvoltatorul sau orice altă entitate specifică. În această libertate, scopul utilizatorului contează, nu scopul dezvoltatorului; tu ca utilizator ești liber să rulezi programul pentru scopurile tale, și dacă îl distribui altcuiva... nu ai dreptul să îi impui scopurile tale."

Chip Bennett Chip Bennett
19 iul. 2011 23:23:10

Aceasta este o idee proastă. Ca dezvoltator inexperimentat de plugin-uri la început, am implementat ceva similar fără să mă gândesc la consecințe pentru mine sau pentru utilizatorii mei. 1. Aceasta încalcă confidențialitatea utilizatorului. 2. Dacă tema ta este distribuită pe scară largă, vei primi mai multe email-uri decât poți gestiona. 3. Dacă #2 este adevărat, în funcție de locul unde găzduiești email-ul, contul tău ar putea fi considerat încălcare a termenilor de utilizare. Contul meu de email a fost suspendat pentru o perioadă din această cauză.

Brian Fegter Brian Fegter
7 aug. 2013 22:41:34

@BrianFegter Absolut de acord. Eram doar în etapa inițială de învățare când am încercat asta. Mulțumesc pentru împărtășirea preocupărilor. Cel mai mare lucru despre StackOverflow și StackExchange este că atunci când te uiți la întrebările tale din trecut, realizezi cât de mult te-ai dezvoltat de-a lungul timpului :-)

Atif Atif
8 aug. 2013 23:52:52
Toate răspunsurile la întrebare 5
2
14

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/

18 ian. 2011 19:54:21
Comentarii

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

Jan Fabry Jan Fabry
25 ian. 2011 10:58:16

Codul lui Krishna este cel din răspunsul lui Benny

brasofilo brasofilo
21 iun. 2012 16:44:02
1
13

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);
}
28 ian. 2011 12:19:47
Comentarii

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

brasofilo brasofilo
21 iun. 2012 16:54:09
1

Nu există un hook specializat pentru asta. Am văzut câteva abordări:

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

3 ian. 2011 13:17:32
Comentarii

Este? doar URL-ul ca să știu unde este instalat?

Atif Atif
3 ian. 2011 14:07:27
0

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

5 ian. 2015 05:41:26
0

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

12 ian. 2013 21:40:54