https://tdestudiodesign.com/wp-content/plugins/whatsapp/style.css

Este fragmento consta de muchas tareas de WooCommerce: configurar un «trabajo de WordPress Cron» (es decir, programar un gancho que se ejecute en un intervalo de tiempo específico), obtener los pedidos completados de WooCommerce de la base de datos y finalmente enviar un correo electrónico simple al administrador de la tienda.

Complejo, pero como de costumbre, simplemente puede copiar/pegarlo y volver a adaptarlo a sus especificaciones únicas. Por ejemplo, lo estoy usando para enviar un correo electrónico de encuesta a cada cliente que ha realizado un pedido. Hay miles de aplicaciones, por lo que este es solo el comienzo. ¡Disfrutar!

Configuración de trabajos cron personalizados en WooCommerce / WordPress

Snippet (PHP): configure un trabajo cron para enviar órdenes completadas de WooCommerce a administrar cada 3 horas

Como escribí en la introducción, hay 3 secciones de código distintas: en la que creo y programo el trabajo cron cada 3 horas, la que consulte la base de datos de pedidos completos en las últimas 3 horas y el que genero el correo electrónico.

Para ver y depurar trabajos cron en WordPress, uso «Advanced Cron Manager» de WordPress.org: https://wordpress.org/plugins/advanced-cron-manager/. Tenga en cuenta que los trabajos de Cron no se ejecutarán a menos que haya un tráfico frecuente del sitio web; de lo contrario, se recomienda configurarlos a través de su alojamiento CPANEL.

    /**   * @snippet       Schedule Email to WooCommerce Admin Every 3 Hours   * @how-to        businessbloomer.com/woocommerce-customization   * @sourcecode    https://businessbloomer.com/?p=106360   * @author        Rodolfo Melogli, Business Bloomer   * @compatible    WooCommerce 3.5.4   * @community     https://businessbloomer.com/club/   */     // ---- ---- ----  // A. Define a cron job interval if it doesn't exist    add_filter( 'cron_schedules', 'bbloomer_check_every_3_hours' );    function bbloomer_check_every_3_hours( $schedules ) {      $schedules['every_three_hours'] = array(          'interval' => 10800,          'display'  => __( 'Every 3 hours' ),      );      return $schedules;  }    // ---- ---- ----  // B. Schedule an event unless already scheduled    add_action( 'wp', 'bbloomer_custom_cron_job' );    function bbloomer_custom_cron_job() {  if ( ! wp_next_scheduled( 'bbloomer_woocommerce_send_email_digest' ) ) {  wp_schedule_event( time(), 'every_three_hours', 'bbloomer_woocommerce_send_email_digest' );  }  }    // ---- ---- ----  // C. Trigger email when hook runs    add_action( 'bbloomer_woocommerce_send_email_digest', 'bbloomer_generate_email_digest' );    // ---- ---- ----  // D. Generate email content and send email if there are completed orders    function bbloomer_generate_email_digest() {  $range = 180; // 3 hours in minutes  $completed_orders = bbloomer_get_completed_orders_before_after( strtotime( '-' . absint( $end ) . ' MINUTES', current_time( 'timestamp' ) ), current_time( 'timestamp' ) );  if ( $completed_orders ) {  $email_subject = "Completed Orders Email Digest";  $email_content = "Completed Order IDs: " . implode( "|", $completed_orders );  wp_mail( 'your@email.com', $email_subject, $email_content );  }  }    // ---- ---- ----  // E. Query WooCommerce database for completed orders between two timestamps    function bbloomer_get_completed_orders_before_after( $date_one, $date_two ) {  global $wpdb;  $completed_orders = $wpdb->get_col(  $wpdb->prepare(  "SELECT posts.ID  FROM {$wpdb->prefix}posts AS posts  WHERE posts.post_type = 'shop_order'  AND posts.post_status = 'wc-completed'  AND posts.post_modified >= '%s'   AND posts.post_modified <= '%s'",  date( 'Y/m/d H:i:s', absint( $date_one ) ),  date( 'Y/m/d H:i:s', absint( $date_two ) )  )  );  return $completed_orders;  }    

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *