所以,我正在尝试为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文档(在ThemeShaper,WP Tuts+和{{ 3}}仅举几例...)
所以,我的问题是:如何正确利用过滤来实现我的查询?