用WP自定义查询替换(过滤?)WooCommerce get_items()

时间:2013-12-11 23:16:01

标签: php mysql woocommerce wordpress

所以,我正在尝试为WooCommerce订单行项目实现拖放界面,以便我可以控制每个订单项的显示顺序(无需按正确的顺序将每个项目添加到购物车)。此功能会覆盖默认的WooCommerce功能,该功能按照它们放入购物车的顺序显示订单商品(在前端购物车,前端订单审核和后端订单管理中)(从{{读取,升序order_item_id 1}}表)。

我的解决方案涉及使用woocommerce_order_items表存储额外的元键(woocommerce_order_itemmeta)/值(整数)对,这些对在自定义查询中使用,特别是在_order_item_order中:

ORDER BY

查看class-wc-order.php第247行到第283行中找到的$line_items = $wpdb->get_results( $wpdb->prepare( " SELECT woi.order_item_id, woi.order_item_name, woi.order_item_type FROM {$wpdb->prefix}woocommerce_order_items woi INNER JOIN wp_woocommerce_order_itemmeta woim1 ON (woi.order_item_id=woim1.order_item_id AND woim1.meta_key='_order_item_order' AND CAST(woim1.meta_value AS CHAR) != '') WHERE woi.order_item_type = 'line_item' AND woi.order_id = %d ORDER BY woim1.meta_value ASC ", $order->id ) ); 公共函数,显示了我尝试使用自定义查询更改的确切功能。 (上面的查询已经过测试并返回我想要的内容。)

来自Code My Own Road'的Josh Kohlbach共享a method他过去常常通过get_items()表格中的order_item_name订购订单商品,方法是挂钩woocommerce_order_items

除此之外,我没有遇到任何帮助我绕过我需要做的事情。我对WordPress中过滤器的正确应用一无所知 - 尽管已经阅读,重新阅读和再次阅读各种教程并参考了WP文档(在ThemeShaperWP Tuts+和{{ 3}}仅举几例...)

所以,我的问题是:如何正确利用过滤来实现我的查询?

0 个答案:

没有答案