我需要根据特定的元键+值在订单列表上创建过滤器.我跟踪了this post条,它帮了我大忙.但是,我需要创建一个符合此规则的筛选器:显示具有元关键字‘_CREATED_VIA’的订单,其值不是‘admin’或‘check out’.

有没有办法在不匹配特定字符串的情况下过滤meta_value? 请看:$vars['meta_value'] = <NOT 'checkout' or 'admin'>

// Process the filter dropdown for orders
add_filter( 'request', 'process_admin_shop_order_marketing_by_meta', 99 );
function process_admin_shop_order_marketing_by_meta( $vars ) {
    global $pagenow, $typenow;
    
    $filter_id = 'filter_shop_order_by_meta';

    if ( $pagenow == 'edit.php' && 'shop_order' === $typenow 
    && isset( $_GET[$filter_id] ) && ! empty($_GET[$filter_id]) ) {
        $vars['meta_key']   = $_GET[$filter_id];
        $vars['orderby']    = 'meta_value';
        if ($_GET[$filter_id] == '_created_via') {
            $vars['meta_value']    = <NOT 'checkout' or 'admin'>
        }
    }
    return $vars;
}

推荐答案

看一下WP_Query documentation for "custom field post meta parameters",您可以使用定义为"NOT IN"meta_compare和定义为array of values…的meta_value

try 以下操作(未经测试):

add_filter( 'request', 'process_admin_shop_order_marketing_by_meta', 99 );
function process_admin_shop_order_marketing_by_meta( $vars ) {
    global $pagenow, $typenow;
    
    $filter_id = 'filter_shop_order_by_meta';

    if ( 'edit.php' === $pagenow && 'shop_order' === $typenow 
    && isset( $_GET[$filter_id] ) && ! empty($_GET[$filter_id]) ) {
        $vars['meta_key']   = $_GET[$filter_id];
        $vars['orderby']    = 'meta_value';
        if ($_GET[$filter_id] === '_created_via') {
            $vars['meta_compare'] = 'NOT IN';
            $vars['meta_value'] = array( 'checkout', 'admin' );
        }
    }
    return $vars;
}

它可以工作.

Php相关问答推荐

按制造商、型号和年份范围判断数据的存在性

PHP:从数组中获取唯一的数字组合

照明\Support\Collection::Filter():参数#1($Callback)的类型必须为?可调用、已给定数组、已调用

PHP如何将ARRAY_MAP与Reset()配合使用

在Laravel Eloquent中实现一对多关系

Laravel eloquent-如果没有包含InitialValue的结果,则查询where Second Value

莫德克斯.当我try 使用pThumb为手机压缩图像时,没有任何react

使用与OpenSSL命令行兼容的AES-256-CTR为大型文件创建php代码OpenSSL加密

无额外字段的Laravel同步

在 WooCommerce 更新结帐事件上动态更新自定义内容

laravel Eloquent 模型的问题

无法在 Laravel 中实例化抽象类 ProductAbstract

根据所选付款方式启用/禁用 WooCommerce 所需的 checkout 字段

Laravel 发送邮箱问题 Swift_TransportException

保留 .htaccess 中的符号登录 URL

同时执行odbc_execute、odbc_fetch_row和odbc_result

在帖子内容中使用短代码触发 Woocommerce 挂钩

输出每个可能的产品选项

如何使用 php 删除 google drive 共享驱动器文件夹中的文件?

使用无限循环时 PHP 服务器发送事件错误 500