Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/292.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.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 Wordpress由两个自定义字段meta#u key';s_Php_Wordpress_Woocommerce - Fatal编程技术网

Php Wordpress由两个自定义字段meta#u key';s

Php Wordpress由两个自定义字段meta#u key';s,php,wordpress,woocommerce,Php,Wordpress,Woocommerce,我有一个Woocomece查询,使用一个元键(“倒计时日期”“或“小时””) 它按自定义的“元键”=>“倒计时日期”或“小时”对产品进行排序,并使用“订单依据”=>“元值”对产品进行排序 我需要将两个meta_键连接在一起。(“hour”键仅返回24小时time的前两个整数) 所需结果,按两个自定义字段订购的产品倒计时日期和小时 $args = array( 'posts_per_page' => 20, 'tax_query' =>

我有一个Woocomece查询,使用一个元键(“
倒计时日期”
或“
小时”
”)

它按自定义的“元键”=>“倒计时日期”或“小时”对产品进行排序,并使用“订单依据”=>“元值”
对产品进行排序

我需要将两个
meta_键
连接在一起。(“hour”键仅返回
24小时
time的前两个整数)

所需结果,按两个自定义字段订购的产品
倒计时日期和小时

$args = array(
            'posts_per_page' => 20,
            'tax_query' => array(
                'relation' => 'AND',
                array(
                    'taxonomy' => 'product_cat',
                    'field' => 'slug',
                    'terms' => 'live-events'
                )),
            'post_type' => 'product',
            'meta_key' => 'countdown_date',
// need to add second meta key here 'meta_key' => 'hour',
             'orderby' => 'meta_value_num',
             'order'   => 'ASC'
            );
        $the_query = new WP_Query( $args );
我看过大量类似的问题,但没有结果

两个循环似乎有些过分,添加meta_查询对我来说不起作用

任何帮助都会很好。:)

以下答案中的完整工作代码来自@Rene_Korss

我可以手动将其添加到functions.php中,以便归档文件的排序方式与自定义循环相同

下面是我正在使用的函数的简化版本。我需要加上两个meta_键

    add_filter('woocommerce_get_catalog_ordering_args','wdm_change_ordering',10,1);
        function wdm_change_ordering($args) { 
            if(is_product_category()) {

                    $args['meta_key'] = 'countdown_date';
// need to add second meta key here $args['meta_key'] = 'hour', 
                    $args['orderby'] = 'meta_value';
                    $args['order'] = 'ASC';

                } 
    return $args;  
    }

将两个元键添加到
meta\u查询
,并将
orderby
设置为
meta\u值
。然后可以用
posts\u orderby
hook替换它

<?php

// Override orderby if orderby value = 'meta_value'
function orderby_countdown_date_and_hour( $orderby ){
    return str_replace( 'meta_value', 'meta_value, mt1.meta_value', $orderby );
}

$args = array(
    'post_type'      => 'product',
    'posts_per_page' => 20,
    'tax_query'      => array(
        'relation'   => 'AND',
        array(
            'taxonomy' => 'product_cat',
            'field'    => 'slug',
            'terms'    => 'live-events'
        )
    ),
    'meta_query' => array(
        array(
            'key'     => 'countdown_date',
            'value'   => '',
            'compare' => '!='
        ),
        array(
            'key'     => 'hour',
            'value'   => '',
            'compare' => '!='
        )
    ),
    'orderby'   => 'meta_value',
    'order'     => 'ASC'
);

// Replace orderby
add_filter( 'posts_orderby', 'orderby_countdown_date_and_hour' );

// Query
$the_query = new WP_Query( $args );

// Remove our orderby
remove_filter( 'posts_orderby', 'orderby_countdown_date_and_hour' );
也就是说

ORDER BY countdown_date, hour ASC

嘿,雷内,谢谢你的帮助。如果您感兴趣,URL是:我已经将函数和过滤器添加到functions.php文件中。更新了$args。结果是相同的,如果它只是命令,但倒计时的日期。不知道从这里到哪里去。你的方法看起来很好,只是不明白为什么一小时都没用。小时剂量作为单个元键工作。@Frithir.com事实证明,您不允许设置custome
orderby
,请参阅。此外,
postemta
表的名称也略有不同。抱歉搞混了。我已经编辑了我的答案。谢谢Rene,它现在正在我的家庭自定义模板上工作。是时候让它进入功能了,这样我也可以在归档页面上使用它了。:)确定你有时间看一下问题的更新,把它也包括在函数中吗?我已经搜索了一个小时,试图在
woocommerce\u get\u catalog\u ordering\u args
hook中找到它的实现。令人惊讶的是,这并不简单。
ORDER BY countdown_date, hour ASC