大佬教程收集整理的这篇文章主要介绍了如何在我的过滤器钩子中获取订单对象,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我很难在我的代码中获得一些简单的东西,比如订单对象。 这就是它应该如何工作。
但由于某种原因,我没有从这个过滤器中获取订单对象(它是 NulL),所以我想我必须自己获取它。但是在这里,我被卡住了:(
我正在通过单击订单中的“重新计算金额”来测试它 - 然后它应该删除或添加订单的税费。当我在过滤器中返回 true 但我需要更多逻辑时,它会起作用。
@H_419_7@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; } }
此时 WooCommerce 中没有全局订单对象。如果您检查应用钩子的 WooCommerce 代码,您就会看到这一点,而无需花时间问一个可以自己回答的问题!
wp-content/plugins/woocommerce/includes/abstracts/abstract-wc-order.php |第1562行
$is_vat_exempt = apply_filters( 'woocommerce_order_is_vat_exempt','yes' === $this->get_meta( 'is_vat_exempt' ),$this );
由于此文件中定义的类是订单的抽象类,因此 $this
是您的 $order
,因为它引用了对象/类。
作为建议,我建议您查看 WordPress 开发人员文档中的过滤器和挂钩。通常你会在那里找到很多答案:
https://developer.wordpress.org/reference/functions/add_filter/ https://developer.wordpress.org/reference/functions/add_action/
此外,您可以在将来使用上述文档链接中的知识搜索挂钩在您的 IDE 中的应用位置。
因此,您的代码需要更改为:
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;
}
}
当您确定一切正常时,您可以再次删除 error_log()
函数。如果您在开发过程中不知道如何在 WordPress 上启用或使用日志记录,您可以查看此来源:
https://wordpress.org/support/article/debugging-in-wordpress/
以上是大佬教程为你收集整理的如何在我的过滤器钩子中获取订单对象全部内容,希望文章能够帮你解决如何在我的过滤器钩子中获取订单对象所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。