升级Wordpress 5.0.3后,Woocommerce订单未显示全部

问题描述 投票:0回答:1

将WordPress升级到v5.0.3后,Woocommerce订单未显示在管理面板的所有订单页面中。经过一点调试后,两个版本之间发送的查询不同。它曾经是:

SELECT SQL_CALC_FOUND_ROWS  wp_posts.ID FROM wp_posts  WHERE 1=1  AND wp_posts.post_type = 'shop_order' AND ((wp_posts.post_status = 'wc-pending' OR wp_posts.post_status = 'wc-processing' OR wp_posts.post_status = 'wc-on-hold' OR wp_posts.post_status = 'wc-completed' OR wp_posts.post_status = 'wc-cancelled' OR wp_posts.post_status = 'wc-refunded' OR wp_posts.post_status = 'wc-failed' OR wp_posts.post_status = 'wc-shipped' OR wp_posts.post_status = 'wc-approved'))  ORDER BY wp_posts.post_date DESC LIMIT 0, 20

之前,但在较新的版本是:

SELECT SQL_CALC_FOUND_ROWS wp_posts.ID FROM wp_posts WHERE 1=1 AND wp_posts.post_type = 'shop_order' AND (wp_posts.post_status = 'publish' OR wp_posts.post_status = 'wc-shipped' OR wp_posts.post_status = 'wc-approved' OR wp_posts.post_status = 'future' OR wp_posts.post_status = 'draft' OR wp_posts.post_status = 'pending' OR wp_posts.post_status = 'private') ORDER BY wp_posts.post_date DESC LIMIT 0, 20

我正在使用WooCommerce v3.2.1

php wordpress woocommerce
1个回答
1
投票

问题是新查询缺少订单的某些状态。

由于您无法更新WooCommerce,因此您可以进入核心文件并执行与修复中相同的更改。

includes/admin/list-tables/class-wc-admin-list-table-orders.php中寻找:

if ( ! isset( $query_vars['post_status'] ) ) {

并将其更改为:

if ( empty( $query_vars['post_status'] ) ) {

因为WordPress的默认变量已更改。

这是有问题的提交:https://github.com/woocommerce/woocommerce/compare/3.5.2...3.5.3#diff-572cadf09364d3a4d4e8c20e061b21f5

发行说明在这里:https://woocommerce.wordpress.com/2018/12/20/woocommerce-3-5-3-release-notes/

更新

由于该文件在3.5.2中不存在,您可以在class-wc-admin-post-types.phpline 1635中执行相同的更改:

if ( ! isset( $vars['post_status'] ) ) {

至:

if ( empty( $vars['post_status'] ) ) {
© www.soinside.com 2019 - 2024. All rights reserved.