Tema Kanca Etkinleştir


15

Temam etkinleştirildiğinde bana web sitesinin URL'sini e-postayla gönderecek bir işlev yazmak istiyorum.

Tema etkinleştirildiğinde başlatılan kanca nedir?


5
Bu amaç için bir Tema etkinleştirme kancası kullanmak kesinlikle yanlıştır : "Programı çalıştırma özgürlüğü, ... geliştirici ile iletişim kurması gerekmeden ... her türlü ... amaç için kullanım özgürlüğü anlamına gelir. ya da başka bir spesifik varlık . Bu özgürlük, öyle kullanıcının amacı bu konularda, değil geliştiricinin amacı ; bir kullanıcı olarak size amaçlar için programını çalıştırmak için serbesttir ve başka birine dağıtmak eğer ... sen amaçlarını ona dayatma hakkına sahip değil . "
Chip Bennett

1
Bu kötü bir fikir. Başlangıçta saf bir eklenti geliştiricisi olarak, kendim veya kullanıcılarım için sonuçları düşünmeden böyle bir şey uyguladım. 1. Bu, kullanıcının gizliliğini ihlal eder. 2. Temanız yaygın olarak dağıtılmışsa, işleyebileceğinizden daha fazla e-posta alacaksınız. 3. # 2 doğruysa, e-postanızı nerede barındırdığınıza bağlı olarak, hesabınız kullanım koşullarını ihlal ettiği şeklinde yorumlanabilir. Bu nedenle e-posta hesabım bir süre için kapatıldı.
Brian Fegter

@BrianFegter Kesinlikle mantıklı. Sadece bunu denediğimde ilk öğrenim aşamasındaydım. Endişelerinizi paylaştığınız için teşekkür ederiz. StackOverflow ve StackExchange hakkında en büyük gerçek, geçen yıl sorularınıza baktığınızda, zaman zaman ne kadar geliştirdiğinizin farkında olmanızdır :-)
Atif Mohammed Ameenuddin

Yanıtlar:


13

Ben burada bu kodu var sadece web sitesinde gibi tema_activation_hook.php dosya adı ve bu kopyalayın.

<?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
Bu kodun yazarı (Krishna Kant Sharma) kaynağına bir bağlantı ile bir cevap bıraktı. Belki Benny bu soruya cevap verdiğinde, Krishna'nın cevabını düzenlemek ve kodu ona eklemek için yeterince anlayışlı değildi, bu yüzden downvote'um ...
brasofilo

14

Güvenilir bir etkinleştirme / devre dışı bırakma tema kancaları sağlayan bir kod yazdım. Lütfen bir göz atın ve ne düşündüğünüzü bana bildirin!

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


@Krisha Kant Sharma: Bu kod umut verici görünüyor, ancak cevabınıza kopyalayabilir misiniz? Blog'unuz hiç yer değiştirmezse veya bir nedenden dolayı çevrimdışı olursa, yine de var olur.
Jan Fabry

1
Krishna'nın kodu Benny'nin cevabındaki
koddur

8

Bunun için özel bir kanca yok. Birkaç yaklaşım gördüm:

Kullanıcının rızası olmadan kendinize herhangi bir bilgi e-postayla göndermenin (ve aktivasyonda herhangi bir şey çalıştırmanın böyle bir talepte bulunma fırsatı olmadığını) uygunsuz olarak görülebileceğini belirtmek isterim.


Bu mu? sadece URL böylece yüklü nerede olduğunu bilmek?
Atif Mohammed Ameenuddin


0

Bu kodu, 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);
}

?>

değiştirmek mail@yourdomain.comkendi e-posta adresinizle .

Umarım yardımcı olur.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.