Ich habe ein Plugin erstellt, das eine E-Mail mit allen an diesem Tag bis X Uhr aufgegebenen Bestellungen an Y sendet. Ich habe das Tutorial hier befolgt: https://scotch.io/tutorials/how-to-build-a-wordpress- Plugin-Teil-1
Bei jedem Optionsupdate werden alle geplanten Ereignisse entfernt und neue hinzugefügt. Aus irgendeinem Grund, den ich nicht verstehe, wird die E-Mail gesendet, wenn jemand, der als Administrator angemeldet ist, auf die Startseite gelangt. Sobald ich die Einstellungen ändere und speichere, scheint es anzuhalten. Folgendes ist meiner Meinung nach der relevante Code:
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');
}
Und wo die Aktion hinzugefügt wird: `
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');
}
Kann mir jemand helfen zu verstehen, warum dies passieren könnte?
admin_init
, mit der ein Ereignis gelöscht und geplant wird (letzte Zeile Ihres zweiten Codeblocks).admin_init
Wird beim Laden der Seite im Admin-Bereich ausgelöst , nicht bei einem Optionsupdate.