我有两个自定义的帖子类型,由两个第三方插件创建,我想通过主查询显示在一个常见的有序列表中。它们必须按两个不同的自定义字段排序,但具有相同的信息-事件开始日期,以相同的格式“Y-m-d”存储。下面是我的代码,但它不能按预期的方式工作-首先显示事件类型的帖子,但以任意无序的方式显示,然后按预期的方式显示facebook\\u事件类型的帖子。我如何解决这个问题?
function add_custom_post_type_to_query( $query ) {
if ( $query->is_home() && $query->is_main_query() ) {
$query->set( \'post_type\', array( \'post\', \'facebook_events\', \'event\' ) );
$query->set( \'meta_query\', array(
\'relation\' => \'OR\',
array(
array(
\'key\' => \'event_start_date\', //this is from facebook_events post type
\'value\' => date_i18n("Y-m-d"),
\'compare\' => \'>=\',
\'type\' => \'DATE\',
)
),
array(
\'key\' => \'_event_start_date\', //this is from event post type
\'value\' => date_i18n("Y-m-d"),
\'compare\' => \'>=\',
\'type\' => \'DATE\',
)
) );
$query->set( \'orderby\', \'meta_value\' );
$query->set( \'order\', \'ASC\' );
}
}
add_action( \'pre_get_posts\', \'add_custom_post_type_to_query\' );
UPDATE
我有一个启发!我发现我的代码哪里错了,看看我的答案。
最合适的回答,由SO网友:Iurie 整理而成
我的旧代码错了,这是一个好代码,正如我所想:
function add_custom_post_type_to_query( $query ) {
if ( $query->is_home() && $query->is_main_query() ) {
$query->set( \'post_type\', array( \'post\', \'facebook_events\', \'event\' ) );
$query->set( \'meta_query\', array(
\'relation\' => \'OR\',
array(
\'key\' => \'event_start_date\', //this is from facebook_events post type
\'value\' => date_i18n("Y-m-d"),
\'compare\' => \'>=\',
\'type\' => \'DATE\',
),
array(
\'key\' => \'_event_start_date\', //this is from event post type
\'value\' => date_i18n("Y-m-d"),
\'compare\' => \'>=\',
\'type\' => \'DATE\',
)
) );
$query->set( \'orderby\', \'meta_value\' );
$query->set( \'order\', \'ASC\' );
}
}
add_action( \'pre_get_posts\', \'add_custom_post_type_to_query\' );
UPDATE
Here 您将找到更好的解决方案,因为它用于排序时间戳,不仅包括日期,还包括时间。