ธีมเปิดใช้งาน Hook


15

ฉันต้องการเขียนฟังก์ชั่นเพื่อส่ง URL ของเว็บไซต์ให้ฉันเมื่อเปิดใช้งานธีมของฉัน

เบ็ดเริ่มต้นอะไรเมื่อเปิดใช้งานธีม?


5
การใช้ตะขอสำหรับเปิดใช้งานชุดรูปแบบสำหรับวัตถุประสงค์นี้ผิดอย่างยิ่ง : "อิสระในการเรียกใช้โปรแกรมหมายถึงอิสรภาพ ... ที่จะใช้ ... เพื่อ ... ชนิดใดก็ได้โดยไม่ต้องสื่อสารกับนักพัฒนา หรือหน่วยงานเฉพาะอื่น ๆในเสรีภาพนี้มันเป็นจุดประสงค์ของผู้ใช้ที่มีความสำคัญไม่ใช่วัตถุประสงค์ของนักพัฒนาคุณในฐานะผู้ใช้มีอิสระในการใช้งานโปรแกรมเพื่อวัตถุประสงค์ของคุณและถ้าคุณแจกจ่ายให้กับบุคคลอื่น ... คุณเป็น ไม่มีสิทธิ์ที่จะกำหนดจุดประสงค์ของคุณกับเธอ "
Chip Bennett

1
นี่เป็นความคิดที่ไม่ดี ในฐานะนักพัฒนาปลั๊กอินที่ไร้เดียงสา แต่เนิ่นๆฉันได้ดำเนินการบางอย่างเช่นนี้โดยไม่คิดถึงผลที่ตามมาสำหรับฉันหรือผู้ใช้ของฉัน 1. สิ่งนี้เป็นการละเมิดความเป็นส่วนตัวของผู้ใช้ 2. หากธีมของคุณมีการเผยแพร่อย่างกว้างขวางคุณจะได้รับอีเมลมากกว่าที่คุณสามารถจัดการได้ 3. หาก # 2 เป็นจริงทั้งนี้ขึ้นอยู่กับที่คุณโฮสต์อีเมลของคุณบัญชีของคุณอาจถูกตีความว่าเป็นการละเมิดเงื่อนไขการใช้งาน บัญชีอีเมลของฉันถูกปิดชั่วคราวเพราะเหตุนี้
Brian Fegter

@BrianFegter แน่นอนทำให้รู้สึก ฉันเป็นเพียงช่วงเริ่มต้นการเรียนรู้เมื่อฉันพยายามทำสิ่งนี้ ขอบคุณสำหรับการแบ่งปันความกังวล ความจริงที่ยิ่งใหญ่ที่สุดเกี่ยวกับ StackOverflow และ StackExchange คือเมื่อคุณดูคำถามของคุณในปีที่ผ่านมาคุณรู้ว่าคุณได้พัฒนาไปมากเท่าไหร่ :-)
Atif Mohammed Ameenuddin

คำตอบ:


13

ฉันมีรหัสนั้นที่นี่เพียงแค่ตั้งชื่อไฟล์ theme_activation_hook.php เหมือนบนเว็บไซต์และคัดลอก

<?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
ผู้เขียนรหัสนี้ (Krishna Kant Sharma) ได้ทิ้งคำตอบพร้อมลิงก์ไปยังแหล่งที่มา อาจจะถึงเวลาที่เบนนี่ตอบคำถามนี้เขาไม่ฉลาดพอที่จะเพียงแค่คำตอบแก้ไขกฤษณะและเพิ่มรหัสเพื่อมันจึง downvote ของฉัน ...
brasofilo

14

ฉันได้เขียนโค้ดที่ให้ตะขอธีมการเปิดใช้งาน / การปิดการใช้งานที่เชื่อถือได้ โปรดตรวจสอบและแจ้งให้เราทราบว่าคุณคิดอย่างไร!

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


@ Krisha Kant Sharma: รหัสนั้นดูมีแนวโน้ม แต่คุณสามารถคัดลอกไปไว้ในคำตอบของคุณได้ไหม? จากนั้นจะยังคงมีอยู่ถ้าบล็อกของคุณเปลี่ยนตำแหน่งหรือด้วยเหตุผลบางอย่างจะออฟไลน์
ม.ค. Fabry

1
รหัสของกฤษณะเป็นหนึ่งในคำตอบของ Benny
brasofilo

8

ไม่มีตะขอพิเศษสำหรับสิ่งนี้ ฉันได้เห็นสองแนวทาง:

ฉันต้องการทราบว่าการส่งอีเมลข้อมูลด้วยตัวคุณเองโดยไม่ได้รับความยินยอมจากผู้ใช้ (และการดำเนินการใด ๆ เมื่อเปิดใช้งานไม่มีโอกาสขอเช่นนั้น) สามารถดูได้ว่าไม่เหมาะสม


ใช่ไหม? แค่ URL เพื่อที่ฉันจะได้รู้ว่าติดตั้งอยู่ที่ไหน?
Atif Mohammed Ameenuddin

3

Wordpress after_switch_themeในขณะนี้ให้เบ็ดนี้เป็น คุณสามารถใช้มันได้เช่น:

add_action('after_switch_theme', 'my_theme_activation');

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

คุณสามารถใช้switch_themehook เพื่อรันโค้ดในการปิดการใช้งานธีมได้เช่นกัน

แหล่งที่มา: http://codex.wordpress.org/Plugin_API/Action_Reference/after_switch_theme


0

วางรหัสนี้ที่ด้านบนในของคุณ 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);
}

?>

แทนที่mail@yourdomain.comด้วยที่อยู่อีเมลของคุณเอง

หวังว่ามันจะช่วย

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.