我有一个名为" books"。
的自定义帖子类型此帖子类型有一个自定义字段,名为" release-date"包含unix时间戳。
我正在使用WordPress archive.php页面获取图书清单,而我正在尝试更改主要查询。
我需要的是只有具有发布日期>的书籍。今天按发布日期排序。
这是我尝试对它进行排序的:
global $query_string;
query_posts( $query_string . "&meta_key=release-date&orderby=meta_value_num&order=ASC&posts_per_page=9" );
排序似乎没有按预期工作。
答案 0 :(得分:1)
我认为现在你应该使用WP_Query类:
$args = array(
'post_type' => 'books',
'meta_query' => array (
'key' => 'release-date',
'value' => date('d/m/Y',strtotime("today")),
'type' => 'DATE',
'compare' => '>='
),
'meta_key' => 'release-date',
'orderby' => 'meta_value_num',
'order' => 'DESC'
);
然后,只是
$your_query = new WP_Query( $args );
if ($your_query->have_posts()) {
while ( $jobs_query->have_posts() ) {
$your_query->the_post();
var_dump($post)
}
}
更多信息here
答案 1 :(得分:0)
因此,如果你只想要发布日期比今天更大的帖子你可以做一个简单的wp查询来获取所有帖子:
function getPostsByQuery(WP_Query $query)
{
$posts = array();
if ($query->have_posts()) {
while ($query->have_posts()) {
$query->the_post();
$posts[] = $query->post;
}
wp_reset_postdata();
}
return $posts;
}
function getPostsByCustomemField($name, $limit = -1)
{
return getPostsByQuery(new WP_Query(array('post_type'=>'books','meta_key' => $name, 'posts_per_page' => $limit)));
}
function getBooks() {
$posts = getPostsByCustomemField('release-date');
$books = [];
foreach ($posts as $post) {
if (get_post_meta($post->ID,'release-date',true) > date('d/m/Y',strtotime("today"))) {
$books[] = $post;
}
}
return $books;
}