Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

114
Vistas
Cómo obtener un objeto de pedido en mi gancho de filtro

Tengo algunas dificultades para obtener algo simple como el objeto de pedido en mi código. Así es como DEBE funcionar.

Pero por alguna razón, no obtengo el objeto de pedido (es NULL) de este filtro, así que creo que tengo que obtenerlo yo mismo. Pero aquí, estoy atascado :(

Lo estoy probando haciendo clic en "Recalcular sumas" en el pedido; luego debería eliminar o agregar los impuestos al pedido. Funciona cuando solo devuelvo verdadero en mi filtro, pero necesito algo más de lógica.

 add_filter("woocommerce_order_is_vat_exempt", 'tax_exempted_user'); function tax_exempted_user(){ global $order; // returns NULL $user = $order->get_user(); if( $user->get_id() && get_field( 'field_60dd7434e8426', 'user_' . $user->get_id() ) == true ) { return true; } else { return false; } }
over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

No hay ningún objeto de pedido global en WooCommerce en este momento. Si revisa el código de WooCommerce donde se aplica el gancho, ¡habrá visto esto sin perder su tiempo haciendo una pregunta que puede responder usted mismo!

wp-content/plugins/woocommerce/includes/abstracts/abstract-wc-order.php | línea 1562

 $is_vat_exempt = apply_filters( 'woocommerce_order_is_vat_exempt', 'yes' === $this->get_meta( 'is_vat_exempt' ), $this );

Dado que la clase definida en este archivo es una clase abstracta de un pedido, $this es su $order ya que hace referencia al objeto/clase.

Como recomendación, le sugiero que revise los filtros y enlaces en la documentación del desarrollador de WordPress. Normalmente encuentras muchas respuestas allí:

https://developer.wordpress.org/reference/functions/add_filter/https://developer.wordpress.org/reference/functions/add_action/

Además, puede buscar dónde se aplican los ganchos en su IDE con el conocimiento de los enlaces de documentación anteriores en el futuro.

Entonces, en su lugar, su código debe cambiarse a esto:

 add_filter( 'woocommerce_order_is_vat_exempt', 'filter_woocommerce_order_is_vat_exempt', 10, 2 ); function filter_woocommerce_order_is_vat_exempt( bool $is_exempt, WC_Order $order ) { $user = $order->get_user(); error_log( $order->get_id() ); // <-- Check error log for the id of an order - this way you can be sure its working if ( $user->get_id() && get_field( 'field_60dd7434e8426', 'user_' . $user->get_id() ) == true ) { return true; } else { return false; } }

Puede eliminar la función error_log() nuevamente cuando esté seguro de que todo funciona. Si no sabe cómo habilitar o usar el inicio de sesión en WordPress durante su desarrollo, puede consultar esta fuente:

https://wordpress.org/support/article/debugging-in-wordpress/

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda