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ì?
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ì?
Câu trả lời:
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);
}
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/
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:
switch_theme
móc với việc kiểm tra chủ đề của bạn - Chỉ thực hiện mã Cài đặt mã xác thực trên Kích hoạt?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.
Wordpress hiện cung cấp hook này như after_switch_theme
. Bạn có thể sử dụng nó như vậy:
add_action('after_switch_theme', 'my_theme_activation');
function my_theme_activation () {
// DO ALL THE THINGS
}
Bạn có thể dùng switch_theme
hook để chạy mã khi hủy kích hoạt chủ đề .
Nguồn: http://codex.wordpress.org/Plugin_API/Action_Reference/after_switch_theme
Đặ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.