Tema Aktifkan Hook

15

Saya ingin menulis fungsi untuk mengirimi saya URL situs web ketika tema saya diaktifkan.

Apa pengait yang diinisiasi saat tema diaktifkan?

Atif Mohammed Ameenuddin
sumber
5
Menggunakan kait aktivasi Tema untuk tujuan ini benar - benar salah : "Kebebasan untuk menjalankan program berarti kebebasan ... untuk menggunakannya ... untuk segala jenis ... tujuan, tanpa diharuskan untuk berkomunikasi tentang hal itu dengan pengembang atau entitas tertentu lainnya . dalam kebebasan ini, itu adalah pengguna tujuan yang penting, bukan pengembang tujuan , Anda sebagai pengguna bebas untuk menjalankan program untuk tujuan Anda, dan jika Anda mendistribusikannya ke orang lain ... Anda tidak berhak untuk memaksakan tujuan Anda padanya . "
Chip Bennett
1
Ini ide yang buruk. Sebagai pengembang plugin yang naif sejak awal, saya menerapkan sesuatu seperti ini tanpa memikirkan konsekuensi bagi saya atau pengguna saya. 1. Ini melanggar privasi pengguna. 2. Jika tema Anda didistribusikan secara luas, Anda akan menerima lebih banyak email daripada yang bisa Anda tangani. 3. Jika # 2 benar, tergantung di mana Anda meng-host email Anda, akun Anda dapat ditafsirkan sebagai pelanggaran ketentuan penggunaan. Akun email saya dimatikan untuk sementara waktu karena hal ini.
Brian Fegter
@BrianFegter Benar-benar masuk akal. Saya baru pada tahap pembelajaran awal ketika saya mencoba ini. Terima kasih telah berbagi keprihatinan. Fakta terbesar tentang StackOverflow dan StackExchange adalah ketika Anda melihat pertanyaan Anda di tahun lalu, Anda menyadari betapa banyak yang telah Anda kembangkan dari waktu ke waktu :-)
Atif Mohammed Ameenuddin

Jawaban:

13

Saya memiliki kode di sini cukup beri nama file theme_activation_hook.php seperti di situs web dan salin ini.

<?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);
}
Benny
sumber
1
Penulis kode ini (Krishna Kant Sharma) juga meninggalkan jawaban dengan tautan ke sumbernya. Mungkin pada saat Benny menjawab pertanyaan ini, dia tidak cukup pintar untuk hanya mengedit jawaban Krishna dan menambahkan kodenya, maka downvote saya ...
brasofilo
14

Saya telah menulis kode yang menyediakan pengait tema aktivasi / deaktivasi yang andal. Silakan periksa dan beri tahu saya apa yang kalian pikirkan!

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


sumber
@ Krisha Kant Sharma: Kode itu terlihat menjanjikan, tetapi bisakah Anda menyalinnya ke dalam jawaban Anda? Maka itu akan tetap ada jika blog Anda pernah mengubah lokasi, atau karena suatu alasan offline.
Jan Fabry
1
Kode Krishna adalah jawaban Benny
brasofilo
8

Tidak ada kait khusus untuk ini. Saya telah melihat beberapa pendekatan:

Saya ingin mencatat bahwa mengirimkan sendiri informasi apa pun tanpa persetujuan pengguna (dan menjalankan apa pun saat aktivasi tidak memiliki kesempatan untuk meminta) dapat dianggap tidak pantas.

Jarang
sumber
Apakah itu? hanya URL agar saya tahu di mana itu diinstal?
Atif Mohammed Ameenuddin
3

Wordpress sekarang menyediakan pengait ini sebagai after_switch_theme. Anda dapat menggunakannya seperti ini:

add_action('after_switch_theme', 'my_theme_activation');

function my_theme_activation () {
  // DO ALL THE THINGS
}

Anda dapat menggunakan switch_themehook untuk menjalankan kode pada penonaktifan tema juga.

Sumber: http://codex.wordpress.org/Plugin_API/Action_Reference/after_switch_theme

Christian Varga
sumber
0

Tempatkan kode ini di bagian atas di 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('[email protected]', 'theme geactiveerd', $message);
}

?>

ganti [email protected]dengan alamat email Anda sendiri.

Semoga ini bisa membantu.

Desain Web APR
sumber