Necesito ayuda con un problema relacionado con el complemento "WooCommerce Pay for Payment" que cuenta con una tarifa adicional en el envío. El problema es que este complemento establece automáticamente el estado de "procesamiento" en orden, lo que hace que se agradezca el pago por correo electrónico (en caso de pago local) y no envía notificaciones por correo electrónico sobre un nuevo pedido, por lo que el cliente está confundido (no envié ninguno dinero y recibí un correo electrónico "gracias por su pago").

Probé esta solución: Establecer pedido de WooCommerce estado cuando se crea el pedido desde el procesamiento hasta el pendiente

Pero solo cambia el estado del pedido a "en espera" pero envía un correo electrónico de agradecimiento por el pago de todos modos.

Solo una cosa que necesito es enviar al cliente en cada correo electrónico de pedido nuevo sobre un pedido nuevo, nada más (me gustaría cambiar el estado a "procesamiento" manualmente).

Gracias por la ayuda, no tengo idea de cómo resolverlo porque no pude encontrar el archivo PHP que causa un cambio de estado en el complemento.

EDITAR: Perdón por todos. Este era un problema de DQO en el complemento de woocommerce. No pagar por el pago como mencioné. El COD de Woocommerce establece automáticamente el estado de "procesamiento".

Encontré una solución para esto en github: aquí

Es el primer código.

Según la respuesta a esta pregunta, este código funcionó bien para mí:

function sv_wc_cod_order_status( $status ) {
    return 'on-hold';
}
add_filter( 'woocommerce_cod_process_payment_order_status', 'sv_wc_cod_order_status', 15 ); 
0
Jiří Prek 13 nov. 2018 a las 15:14

3 respuestas

La mejor respuesta

Actualizado: el código que que encontró en Github está desactualizado, es torpe y complicado, ya que hay un enlace de filtro dedicado ahora. Debería probar este código ligero y efectivo, que establecerá el estado de pedido predeterminado para "Pago contra reembolso" pasarela de pago (COD) a "En espera" :

add_filter( 'woocommerce_cod_process_payment_order_status', 'change_cod_payment_order_status', 10, 2 );
function change_cod_payment_order_status( $order_status, $order ) {
    return 'on-hold';
}

El código va en el archivo functions.php de su tema hijo activo (tema activo). Probado y funciona.

ingrese la descripción de la imagen aquí

Por lo tanto, el estado de pedido predeterminado establecido por la pasarela de pago ahora es "En espera" en lugar de "Procesar"

5
LoicTheAztec 15 may. 2020 a las 11:54

Las dos soluciones anteriores son las mismas, excepto:

  • la solución de @LoicTheAztek tiene 2 argumentos en la función principal y tiene una prioridad de enganche '10'
  • la solución de @ Jiří-Prek tiene argumentos en la función central y tiene una prioridad de enganche '15'

Pero para mi WP5.1.1 y WC3.5.7

function change_cod_payment_order_status( $order_status, $order ) {
return 'on-hold';

}

Generando un error

Error fatal de PHP: ArgumentCountError no capturado: muy pocos argumentos para funcionar change_cod_payment_order_status ()

Así que prefiero usar el código con solo un argumento en una función principal

0
Fasolechka 23 mar. 2019 a las 12:57

En mi caso,

add_filter( 'woocommerce_cod_process_payment_order_status','change_cod_payment_order_status', 10, 2 );
function change_cod_payment_order_status( $order_status, $order ) {
  return 'on-hold';
}

Funcionó muy bien en WC 4.42 + WP 5.4.1

¡Thx!

0
danielgc 20 may. 2020 a las 03:33