Chủ đề kích hoạt Hook


15

Tôi muốn viết một chức năng để gửi email cho tôi URL của trang web khi chủ đề của tôi được kích hoạt.

Móc được bắt đầu khi chủ đề được kích hoạt là gì?


5
Sử dụng hook kích hoạt Theme cho mục đích này là hoàn toàn sai : "Tự do chạy chương trình có nghĩa là tự do ... sử dụng nó ... cho bất kỳ mục đích ... nào, mà không bắt buộc phải giao tiếp với nhà phát triển hoặc trong bất kỳ thực thể cụ thể nào khác . Trong quyền tự do này, mục đích của người dùng là vấn đề, không phải mục đích của nhà phát triển , bạn với tư cách là người dùng có thể tự do chạy chương trình cho mục đích của mình và nếu bạn phân phối nó cho người khác ... bạn là không được quyền áp đặt mục đích của bạn lên cô ấy . "
Chip Bennett

1
Đây là một ý tưởng tồi. Là một nhà phát triển plugin ngây thơ từ rất sớm, tôi đã triển khai một cái gì đó như thế này mà không nghĩ đến hậu quả cho tôi hoặc người dùng của tôi. 1. Điều này vi phạm quyền riêng tư của người dùng. 2. Nếu chủ đề của bạn được phân phối rộng rãi, bạn sẽ nhận được nhiều email hơn mức bạn có thể xử lý. 3. Nếu số 2 là đúng, tùy thuộc vào nơi bạn lưu trữ email, tài khoản của bạn có thể được hiểu là vi phạm các điều khoản sử dụng. Tài khoản email của tôi đã ngừng hoạt động một thời gian vì điều này.
Brian Fegter

@BrianFegter Hoàn toàn có ý nghĩa. Tôi chỉ ở giai đoạn học tập ban đầu khi tôi thử nó. Cảm ơn đã chia sẻ mối quan tâm. Sự thật lớn nhất về StackOverflow và StackExchange là khi bạn xem xét các câu hỏi của bạn trong năm qua, bạn sẽ nhận ra mình đã phát triển bao nhiêu lần :-)
Atif Mohammed Ameenuddin

Câu trả lời:


13

Tôi có mã đó ở đây chỉ cần đặt tên tệp theme_activation_hook.php như trên trang web và sao chép mã này.

<?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
Tác giả của mã này (Krishna Kant Sharma) cũng để lại một câu trả lời với một liên kết đến nguồn của nó. Có lẽ vào lúc Benny trả lời câu hỏi này, anh ta không đủ hiểu biết để chỉ cần chỉnh sửa câu trả lời của Krishna và thêm mã vào đó, do đó, downvote của tôi ...
brasofilo

14

Tôi đã viết một mã cung cấp một móc chủ đề kích hoạt / hủy kích hoạt đáng tin cậy. Vui lòng kiểm tra và cho tôi biết các bạn nghĩ gì!

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


@Krisha Kant Sharma: Mã đó có vẻ đầy hứa hẹn, nhưng bạn có thể sao chép nó vào câu trả lời của mình không? Sau đó, nó sẽ vẫn tồn tại nếu blog của bạn thay đổi vị trí hoặc vì lý do nào đó ngoại tuyến.
Jan Fabry

1
Mã của Krishna là mã trong câu trả lời của Benny
brasofilo

8

Không có móc chuyên dụng cho việc này. Tôi đã thấy một vài cách tiếp cận:

Tôi muốn lưu ý rằng gửi email cho mình bất kỳ thông tin nào mà không có sự đồng ý của người dùng (và chạy bất cứ điều gì khi kích hoạt không có cơ hội để yêu cầu như vậy) có thể được xem là không phù hợp.


Là nó? chỉ cần URL để tôi có thể biết nó được cài đặt ở đâu?
Atif Mohammed Ameenuddin


0

Đặt mã này ở đầu trong của bạn 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);
}

?>

thay thế mail@yourdomain.com bằng địa chỉ email của riêng bạn.

Hy vọng nó giúp.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.