Suporte » Desenvolvendo com WordPress » Mandar email na troca de situação do pedido customizado no woocommerce

  • Olá!
    Espero que possam me ajudar, vamos no problema.
    Eu criei a ordem de pedido customizada, mas quando eu altero a situação do pedido do woocommerce, ele fica sempre em processando, só entra os campos normal do próprio woocommerce.

    E também, quando eu coloco código, eu deixo de receber qualquer e-mail de pedido, único que chega é que o pedido foi recebido, mas os outros e-mail nunca chega..

    Eu utilizo woocommerce 4.8, wordpress 5.6 e o php 7.1.
    Espero que consigam me ajudar..
    Segue o código que estou usando!

    add_action( 'init', 'register_custom_post_status', 20 );
    function register_custom_post_status() {
        register_post_status( 'separacao', array(
            'label'                     => _x( 'Área de Separação', 'Order status', 'woocommerce' ),
            'public'                    => true,
            'exclude_from_search'       => false,
            'show_in_admin_all_list'    => true,
            'show_in_admin_status_list' => true,
            'label_count'               => _n_noop( 'Seu Pedido está na Área de separação <span class="count">(%s)</span>', 'Área de Separação <span class="count">(%s)</span>', 'woocommerce' )
        ) );
    	register_post_status( 'esperando-entrega', array(
            'label'                     => _x( 'Pronto para ser Entregue', 'Order status', 'woocommerce' ),
            'public'                    => true,
            'exclude_from_search'       => false,
            'show_in_admin_all_list'    => true,
            'show_in_admin_status_list' => true,
            'label_count'               => _n_noop( 'Seu Pedido está aguardando para ser entregue <span class="count">(%s)</span>', 'Seu Pedido está aguardando para ser entregue <span class="count">(%s)</span>', 'woocommerce' )
        ) );
    	register_post_status( 'entregando', array(
            'label'                     => _x( 'Saiu para Entrega', 'Order status', 'woocommerce' ),
            'public'                    => true,
            'exclude_from_search'       => false,
            'show_in_admin_all_list'    => true,
            'show_in_admin_status_list' => true,
            'label_count'               => _n_noop( 'Seu Pedido está saindo para Entrega <span class="count">(%s)</span>', 'Seu Pedido está saindo para entrega <span class="count">(%s)</span>', 'woocommerce' )
        ) );
    }
    
    add_filter( 'wc_order_statuses', 'custom_wc_order_statuses', 20, 1 );
    function custom_wc_order_statuses( $order_statuses ) {
        $order_statuses['separacao'] = _x( 'Indo para Separação', 'Order status', 'woocommerce' );
    	$order_statuses['esperando-entrega'] = _x( 'Indo para Separação', 'Order status', 'woocommerce' );
    	$order_statuses['entregando'] = _x( 'Encaminhado para Entrega', 'Order status', 'woocommerce' );
        return $order_statuses;
    }
    function add_new_wc_statuses_to_order_statuses( $order_statuses ) {
     
        $new_order_statuses = array();
     
     
        foreach ( $order_statuses as $key => $status ) {
     
            $new_order_statuses[ $key ] = $status;
     
            if ( 'wc-processing' === $key ) {
                $new_order_statuses['separacao'] = 'Indo para Separação';
                $new_order_statuses['esperando-entrega'] = 'Indo para Separação';
    			$new_order_statuses['entregando'] = 'Encaminhado para Entrega';
                // Add a $new_order_statuses[key] = value; for each status you've added (in the order you want)
            }
        }
     
        return $new_order_statuses;
    }
    add_filter( 'wc_order_statuses', 'add_new_wc_statuses_to_order_statuses' );*/
    
    add_filter( 'bulk_actions-edit-shop_order', 'custom_dropdown_bulk_actions_shop_order', 20, 1 );
    function custom_dropdown_bulk_actions_shop_order( $actions ) {
        $actions['mark_separacao'] = __( 'Marcar Indo para Separação', 'woocommerce' );
    	$actions['mark_esperando-entrega'] = __( 'Marcar Pronto para ser Entregue', 'woocommerce' );
    	$actions['mark_entregando'] = __( 'Marcar Encaminhado para Entrega', 'woocommerce' );
        return $actions;
    }
    
    // Adding action for 'awaiting-delivery'
    add_filter( 'woocommerce_email_actions', 'custom_email_actions', 20, 1 );
    function custom_email_actions( $action ) {
        $actions[] = 'woocommerce_order_status_separacao';
    	$actions[] = 'woocommerce_order_status_esperando-entrega';
    	$actions[] = 'woocommerce_order_status_entregando';
        return $actions;
    }
    
    add_action( 'woocommerce_order_status_wc-awaiting-delivery', array( WC(), 'send_transactional_email' ), 10, 1 );
    
    add_action('woocommerce_order_status_changed', 'backorder_status_custom_notification', 10, 4);
    function backorder_status_custom_notification( $order_id, $from_status, $to_status, $order ) {
    
       if( $order->has_status( 'separacao' )) {
    
           
            $email_notifications = WC()->mailer()->get_emails();
    
            
            $email_notifications['WC_Email_Customer_Processing_Order']->heading = __('Seu pedido {order_number} está sendo separado!','woocommerce');
            $email_notifications['WC_Email_Customer_Processing_Order']->subject = 'Seu pedido foi para Área de Separação';
    
           
            $email_notifications['WC_Email_Customer_Processing_Order']->trigger( $order_id );
        }
    	if( $order->has_status( 'esperando-entrega' )) {
    
            
            $email_notifications = WC()->mailer()->get_emails();
    
      
            $email_notifications['WC_Email_Customer_Processing_Order']->heading = __('Seu pedido {order_number} está esperando para ser Entregue!','woocommerce');
            $email_notifications['WC_Email_Customer_Processing_Order']->subject = 'Seu pedido esta pronto para ser Entregue!';
    
            $email_notifications['WC_Email_Customer_Processing_Order']->trigger( $order_id );
    
    }
    	if( $order->has_status( 'entregando' )) {
    
            
            $email_notifications = WC()->mailer()->get_emails();
    
            
            $email_notifications['WC_Email_Customer_Processing_Order']->heading = __('Seu pedido {order_number} está saindo para Entrega!','woocommerce');
            $email_notifications['WC_Email_Customer_Processing_Order']->subject = 'Seu pedido está indo até você!';
    
            
            $email_notifications['WC_Email_Customer_Processing_Order']->trigger( $order_id );
    
    }
    }
  • Você deve estar conectado para responder a este tópico.