Php Wordpress由两个自定义字段meta#u key';s
我有一个Woocomece查询,使用一个元键(“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' =>
倒计时日期”“或“小时””)
它按自定义的“元键”=>“倒计时日期”或“小时”对产品进行排序,并使用“订单依据”=>“元值”
对产品进行排序
我需要将两个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事实证明,您不允许设置customeorderby
,请参阅。此外,postemta
表的名称也略有不同。抱歉搞混了。我已经编辑了我的答案。谢谢Rene,它现在正在我的家庭自定义模板上工作。是时候让它进入功能了,这样我也可以在归档页面上使用它了。:)确定你有时间看一下问题的更新,把它也包括在函数中吗?我已经搜索了一个小时,试图在woocommerce\u get\u catalog\u ordering\u args
hook中找到它的实现。令人惊讶的是,这并不简单。
ORDER BY countdown_date, hour ASC