Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

125
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!