特定角色的WooCommerce变更单状态计数

时间:2019-12-12 作者:Amir Sasani

我有两种类型的管理员可以查看订单列表。其中一个管理员可以查看一些订单。

我使用以下代码操作该管理员的订单查询:

add_action(\'pre_get_posts\', function ($query) {
    global $pagenow;
    if (isset($query->query_vars[\'post_type\'])) {
        if ($query->query_vars[\'post_type\'] == \'shop_order\' && (\'edit.php\' == $pagenow)) {

            if (!$query->is_main_query()) {
                return;
            }
            // I manipulate $query here
        }
    }
}, 1000, 1);
这段代码显示了我想向管理员显示的订单,但这并不影响表顶部的订单状态。我指的是这些数字:

enter image description here

如何修复这些数字以向该管理员显示正确的订单状态?

1 个回复
最合适的回答,由SO网友:Hasan Uj Jaman 整理而成

通常,pre\\u get\\u post不会更改wordpress视图post计数。您必须调用另一个过滤器挂钩才能更改为count。

add_action(\'pre_get_posts\', function ($query) {
global $pagenow;
if (isset($query->query_vars[\'post_type\'])) {
    if ($query->query_vars[\'post_type\'] == \'shop_order\' && (\'edit.php\' == $pagenow)) {

        if (!$query->is_main_query()) {
            return;
        }
        // I manipulate $query here

        // Get Post Count Here For Each Status

        add_filter( \'views_edit-shop_order\', function( $views ) {

            $views[\'all\'] = sprintf("<a href=\'%s\'>All (%d)", $url_to_redirect, $all_count );
            $views[\'wc-processing\'] = sprintf("<a href=\'%s\'>Processing (%d)", $url_to_redirect, $processing_count );
            $views[\'wc-completed\'] = sprintf("<a href=\'%s\'>Completed (%d)", $url_to_redirect, $completed_count );
            $views[\'wc-failed\'] = sprintf("<a href=\'%s\'>Failed (%d)", $url_to_redirect, $failed_count );

            return $views;

            // Sample array we get print_r( $views )
            Array
            (
                [all] => All (24)
                [wc-processing] => Processing (3)
                [wc-completed] => Completed (19)
                [wc-failed] => Failed (2)
            )
        });
    }
}
}, 1000, 1);

相关推荐