如何在woocommerce后端通过运输方式实现过滤器?

Lor*_*nzo 3 php wordpress woocommerce

我需要在 woocommerce 后端实现一个过滤器,我可以用它来按选定的运输方式过滤订单。

我可以在自定义字段上创建过滤器并更改查询,但问题是 woocommerce 将运输方式存储在数据库的自定义表中。

有关如何实现此过滤器的任何提示?

Lor*_*nzo 5

我使用这个钩子解决了添加下拉菜单的问题:

add_action( 'restrict_manage_posts', 'display_shipping_dropdown' );
Run Code Online (Sandbox Code Playgroud)

然后使用另一个钩子扩展 where 子句:

add_filter( 'posts_where', 'admin_shipping_filter', 10, 2 );
function admin_shipping_filter( $where, &$wp_query )
{
    global $pagenow;
    $method = $_GET['shipping_filter'];

    if ( is_admin() && $pagenow=='edit.php' && $wp_query->query_vars['post_type'] == 'shop_order' && !empty($method) ) {
        $where .= $GLOBALS['wpdb']->prepare( 'AND ID
                            IN (
                                SELECT order_id
                                FROM wp_woocommerce_order_items
                                WHERE order_item_type = "shipping"
                                AND order_item_name = "' . $method . '"
                            )' );
    }

    return $where;
}
Run Code Online (Sandbox Code Playgroud)