Přeskočit na obsah

Pro vývojáře

Modul přesměruje WooCommerce e-maily do fronty Action Scheduleru pomocí filtru woocommerce_mail_callback:

add_filter( 'woocommerce_mail_callback', function() {
return [ $this, 'add_job_to_queue' ];
} );
  1. Zachycení e-mailu - Modul zachytí volání wp_mail()
  2. Uložení do fronty - Parametry se uloží do wp_options
  3. Naplánování akce - Action Scheduler naplánuje okamžité odeslání
  4. Asynchronní odeslání - Cron spustí odeslání
// Akce spouštěná při odesílání e-mailu
do_action( 'wpify_send_email', $hash );

Frontu e-mailů můžete sledovat v Nástroje → Scheduled Actions:

  • Akce: wpify_send_email
  • Stav: Pending / Complete / Failed
// Parametry se ukládají jako option s hash klíčem
$args = [ $to, $subject, $message, $headers, $attachments ];
$hash = md5( json_encode( $args ) );
update_option( $hash, $args );
// Při odesílání
$args = get_option( $hash );
delete_option( $hash ); // Po úspěšném načtení

Příklad: Sledování odeslaných e-mailů

Section titled “Příklad: Sledování odeslaných e-mailů”
add_action( 'wpify_send_email', function( $hash ) {
$args = get_option( $hash );
if ( $args ) {
error_log( sprintf(
'Odesílám e-mail na: %s, Předmět: %s',
$args[0], // to
$args[1] // subject
) );
}
}, 5 ); // Priorita před modulem
add_action( 'wpify_send_email', function( $hash ) {
$args = get_option( $hash );
if ( ! $args ) {
return;
}
// Vlastní logika před odesláním
list( $to, $subject, $message, $headers, $attachments ) = $args;
// Například logování do vlastní tabulky
global $wpdb;
$wpdb->insert(
$wpdb->prefix . 'email_log',
[
'to_email' => $to,
'subject' => $subject,
'sent_at' => current_time( 'mysql' ),
]
);
}, 5 );

Pokud používáte DISABLE_WP_CRON, nastavte externí cron:

Terminál
# Každou minutu
* * * * * wget -q -O - https://example.com/wp-cron.php?doing_wp_cron > /dev/null 2>&1

Nebo pomocí WP-CLI:

Terminál
* * * * * cd /path/to/wordpress && wp cron event run --due-now > /dev/null 2>&1

Modul využívá Action Scheduler (součást WooCommerce), který je spolehlivější než standardní WP Cron:

VlastnostWP CronAction Scheduler
SpouštěníPři návštěvě stránkyPři návštěvě + CLI
LogováníNeAno
SprávaOmezenáPlná
ŠkálovatelnostNízkáVysoká