Tôi đã tạo một plugin gửi email với tất cả các đơn đặt hàng vào ngày hôm đó trước X đến email Y. Tôi đã làm theo hướng dẫn tại đây: https://scotch.io/tutorials/how-to-build-a-wordpress- plugin-part-1
Trên mỗi bản cập nhật tùy chọn, nó sẽ loại bỏ tất cả các sự kiện theo lịch trình và thêm các sự kiện mới. Vì một số lý do mà tôi không hiểu, email sẽ gửi bất cứ khi nào ai đó đăng nhập với tư cách quản trị viên truy cập trang chủ. Khi tôi thay đổi và lưu cài đặt, nó dường như dừng lại. Đây là những gì tôi nghĩ là mã có liên quan:
public function options_update() {
register_setting($this->plugin_name, $this->plugin_name, array($this, 'validate'));
wp_clear_scheduled_hook('send_woocommerce_daily_order_summary_email');
$options = get_option($this->plugin_name);
$timestamp = strtotime($options['send_time'] . ":00:00 " . get_option('timezone_string'));
wp_schedule_event($timestamp, 'daily', 'send_woocommerce_daily_order_summary_email');
}
Và nơi hành động được thêm vào: `
private function define_admin_hooks() {
$plugin_admin = new Woocommerce_Daily_Order_Summary_Email_Admin( $this->get_plugin_name(), $this->get_version() );
$this->loader->add_action( 'admin_enqueue_scripts', $plugin_admin, 'enqueue_styles' );
$this->loader->add_action( 'admin_enqueue_scripts', $plugin_admin, 'enqueue_scripts' );
// Add menu item
$this->loader->add_action( 'admin_menu', $plugin_admin, 'add_plugin_admin_menu' );
// Add Settings link to the plugin
$plugin_basename = plugin_basename( plugin_dir_path( __DIR__ ) . $this->plugin_name . '.php' );
$this->loader->add_filter( 'plugin_action_links_' . $plugin_basename, $plugin_admin, 'add_action_links' );
// Save/Update our plugin options
$this->loader->add_action('admin_init', $plugin_admin, 'options_update');
}
Bất cứ ai có thể giúp tôi hiểu tại sao điều này có thể xảy ra?
admin_init
xóa và lên lịch một sự kiện (dòng cuối cùng của khối mã thứ hai của bạn).admin_init
kích hoạt tải trang trong phần quản trị , không phải trên bản cập nhật tùy chọn.