Contamos con la mejor información que encontramos por todo internet. Esperamos que te resulte de ayuda y si deseas comentarnos algo que nos pueda ayudar a mejorar hazlo con total libertad.
Solución:
Verifique los siguientes pasos antes de llamar a su gancho.
-
Compruebe si se envía el correo electrónico de finalización del pedido.
-
Hook está registrado correctamente en el archivo de complemento o funciones de tema.php
add_action( 'woocommerce_order_status_completed','callback_function_name' );
global $wp_filter;
print_r($wp_filter);
exit;
Compruebe si el nombre de su función de devolución de llamada está en el gancho array:
[woocommerce_order_status_completed] => Array
(
[10] => Array
(
[wc_paying_customer] => Array
(
[function] => wc_paying_customer
[accepted_args] => 1
)
[wc_downloadable_product_permissions] => Array
(
[function] => wc_downloadable_product_permissions
[accepted_args] => 1
)
[callback_function_name] => Array
(
[function] => callback_function_name
[accepted_args] => 3
)
)
)
Si lo encuentra, entonces todo está bien, significa que probablemente haya un problema con su tema o archivo functions.php. Verifique la función de enlace o devolución de llamada en sus archivos y luego busque remove_action
o remove_all_actions
eso es probablemente lo que impide que se llame a su gancho.
También puedes consultar de esta manera
add_action( 'woocommerce_order_status_completed', 'callback_function_name', 1);
Cambie la prioridad de su gancho de 10 a 1 para que se llame primero que cualquier otra acción o gancho.
Puedes usar este gancho
add_action( 'woocommerce_order_status_changed', 'your_function', 99, 4 );
Y la función se verá como
function your_function( $order_id, $old_status, $new_status, $order )
if( $new_status == "completed" )
//your code here
Esperamos que esto sea útil.