使用以下查询,我能够成功返回网络研讨会,但不包括旧的网络研讨会。但是,它们仍然按照发布的顺序出现,而不是通过webinar_startDate出现。
<?php $my_array = array(
'meta_query' => array(
array(
'key' => 'webinar_startDate',
'value' => date("Y-m-d H:i:s"),
'compare' => '>=',
'type' => 'DATETIME'
)
),
'orderby' => 'meta_value',
'post_type' => 'webinars',
'posts_per_page' => 20,
'order' => 'ASC'
); ?>
我怀疑由于从3.0到3.1的更改,使用了orderby => meta_value可能有所不同,但是我无法在WordPress文档中找到答案来解释这一点。
谁能帮忙?提前谢谢。
#1 楼
新的meta_query
数组选择查询返回的帖子。因此,是的,您正在指示该meta_query
中的“键”,但是除了meta_query之外,您仍然可以使用'orderby' => 'meta_value',
'meta_key' => '_events_meta',
的旧方法,因为这些行表示如何对结果查询进行排序。所以是的,您可能两次指示相同的meta_key。
#2 楼
我对名为events
的自定义帖子使用以下代码,以使所有帖子都处于循环中。 $evtLoop = new WP_Query(array('post_type' => 'events',
'posts_per_page' => 10,
'orderby' => 'meta_value',
'meta_key' => '_events_meta',
'order'=>'DESC'));
我认为您使用代码的方式大致相同。我认为您缺少带有要排序的元字段名称的
meta_key
。如果将'meta_key' => 'webinar_startDate',
添加到外部数组中,也许会有所帮助?
评论
我现在明白了。我对Wordpress文档感到困惑,说“ meta_key”和“ meta_value”已贬值。我以为那意味着我不能使用它们,但是我想那是误导。谢谢!
–杰夫·K。
2011年3月2日21:55
评论
这个答案并不完全正确。如果您在现有meta_query之外添加orderby和meta_key,则结果的确会按提供的键进行排序-但即使值不符合条件,它也会包括设置了该meta键的所有帖子在meta_query中(至少,这就是我在测试中的工作方式)。更好的方法可能是将数组作为orderby参数传递,如下所述:core.trac.wordpress.org/ticket/17065#comment:14
–MathSmath
2012年4月3日在16:59