Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/236.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php WooCommerce按项目计数筛选订单_Php_Wordpress_Woocommerce - Fatal编程技术网

Php WooCommerce按项目计数筛选订单

Php WooCommerce按项目计数筛选订单,php,wordpress,woocommerce,Php,Wordpress,Woocommerce,是否可以在WooCommerce Orders Admin中创建自定义筛选器,以允许按订单项目计数进行筛选 我们希望筛选一个项目或多个项目(多个项目)的订单 我们通过下面的操作和函数在页面上有下拉列表,但我们仍然停留在筛选部分,以及如何查询每个订单以找到项目数量 add_action( 'restrict_manage_posts', 'filter_multi_item_orders', 50 ); function filter_multi_item_orders() { glob

是否可以在WooCommerce Orders Admin中创建自定义筛选器,以允许按订单项目计数进行筛选

我们希望筛选一个项目或多个项目(多个项目)的订单

我们通过下面的操作和函数在页面上有下拉列表,但我们仍然停留在筛选部分,以及如何查询每个订单以找到项目数量

add_action( 'restrict_manage_posts', 'filter_multi_item_orders', 50 );

function filter_multi_item_orders() {
    global $typenow;
    if ( 'shop_order' != $typenow ) {
        return;
    }?>

    <select name='multi_order_view' id='dropdown_multi_order_view'>
        <option <?php
        if ( isset( $_GET['multi_order_view'] ) && $_GET['multi_order_view'] ) {
            selected( 'all', $_GET['multi_order_view'] );
        }
        ?> value="all"><?php esc_html_e( 'Single and Multi Orders', 'show_multipet_orders' ); ?></option>
        <option <?php
        if ( isset( $_GET['multi_order_view'] ) && $_GET['multi_order_view'] ) {
        selected( 'single', $_GET['multi_order_view'] );
        }
        ?>value="single"><?php esc_html_e( 'Single Orders Only', 'show_multipet_orders' ); ?></option>
        <option <?php
        if ( isset( $_GET['multi_order_view'] ) && $_GET['multi_order_view'] ) {
        selected( 'multi', $_GET['multi_order_view'] );
        }
        ?>value="multi"><?php esc_html_e( 'Multi Orders Only', 'show_multipet_orders' ); ?></option>
    </select>
<?php
}

add_filter( 'request', 'filter_multi_item_orders_query', 100 );
function filter_multi_item_orders_query( $vars ) {
    global $typenow;
    $key = 'post__not_in';
    if ( 'shop_order' == $typenow && isset( $_GET['multi_order_view'] ) ) {
        if ( 'single' == $_GET['multi_order_view'] ) {
            // return orders with $order->get_item_count() == 1
        }
        elseif ( 'multi' == $_GET['multi_order_view'] ) {
            // return orders with $order->get_item_count() > 1
        }
    }
    return $vars;    
}
add_action('restrict_manage_posts','filter_multi_item_orders',50);
函数过滤器\u多项目\u订单(){
全球$typenow;
如果('shop_order'!=$typenow){
返回;
}?>

您必须加入相关的WooCommerce表(我想至少是WooCommerce\u order\u项目)对于这里的主查询-但是WP_query没有明确的方法来完成这项工作,因此您必须自己将正确的值放到正确的位置-有一个非常广泛的解释,即如何开始。另一种方法可能是,您连接到订单创建和更新中,以便您可以实际调用
get_item_count
重新-并将结果存储到自定义元字段中。然后你只需附加正确的元查询,那么你是说问题是实际的“项目数”在任何表中都不存在数字吗?我看到了问题-没有任何可实际查询的内容。我们有18k订单记录,因此在自定义元字段中设置该数字这不是一个简单的任务,我不怀疑。遗憾的是,我们无法编写任何东西来查看每个订单,并检查“如果get_item_count>1 show,如果not exclude”(如果get_item_count>1 show,如果不排除),但这将需要一段时间来运行并在处理方面加载。它不是作为一个数字存储在单个位置,而是需要通过计数来确定在
woocommerce\u order\u items
表中,属于订单的单个订单项记录。因此,要查询的数据是存在的,但使用WP\u查询功能将其合并到主查询中可能不是那么简单。您必须弄清楚需要哪种类型的联接才能获得术语方面的必要信息一个SQL查询-然后看看如何将连接填充到查询对象的正确属性中。理解。感谢您的见解@04FS