我正在为一个个人项目建立一个网站,我通过自定义帖子类型创建了一系列事件。
然后,我需要按照自定义的元值(事件开始日期)和ASC顺序显示这些事件。我已经找到了答案,我使用的代码如下:
/*CUSTOM ARCHIVE FOR EVENTS*/
function events_pagesize( $query ) {
// exit out if it\'s the admin or it isn\'t the main query
if ( is_admin() || ! $query->is_main_query() )
return;
// so its not admin, and its the main query, is it the tr-events post archive?
if ( is_post_type_archive( \'tr-events\' ) ) {
// it is!! Set the posts_per_page to 6
$query->set( \'posts_per_page\', 4 );
$query->set( \'order\' , \'asc\' );
$query->set( \'meta_key\', \'wpcf-tr-order-date\');
$query->set( \'orderby\', \'meta_value\');
return;
}
}
add_action( \'pre_get_posts\', \'events_pagesize\', 1 );
我的问题是如何隐藏超过特定日期的帖子,以及如何创建存档视图以显示已完成的事件?我已经看到很多关于这方面的帖子,大多数选项都会破坏分页。此选项作为函数中的函数。php让我达到了70%。
SO网友:david.binda
我想知道,对于您来说,将日期存储为post meta中的unix时间戳是最简单的,而不是您可以通过小于当前时间的post meta轻松筛选帖子timestamp (或任何其他日期时间戳)。
请参见此示例(不完全了解您的代码,但您会抓住要点:
$args = array(
\'post_type\' => \'tr-events\',
\'meta_key\' => \'wpcf-tr-order-date\',
\'orderby\' => \'meta_value_num\',
\'order\' => \'ASC\', //DESC, its up to you
\'meta_query\' => array(
array(
\'key\' => \'wpcf-tr-order-date\',
\'value\' => strtotime(\'now\'),
\'compare\' => \'<\',
)
)
);
$query = new WP_Query($args);
正如我提到的,您必须将这段代码重写为
$query->set();
总体安排