我有四个使用自定义帖子类型ui插件创建的自定义帖子类型;每个代表一个事件类型,其中包含一组使用高级自定义字段插件创建的不同自定义字段。
我的目标是按时间顺序显示四个事件池中的所有事件。用WP\\u query查询这四个是没有问题的,但到目前为止,区分输出并对其进行排序让我很担心。
示例代码查询自定义post类型,并输出事件的日期以及一个回音,以确定事件的类型,以便进行调试。
<article>
<?php $args = array(
\'post_type\' => array( \'eventtype1\', \'eventtype2\', \'eventtype3\', \'eventtype4\' ),
\'posts_per_page\' => -1
);
$the_query = new WP_Query( $args );
if ( $the_query->have_posts() ) : while ( $the_query->have_posts() ) : $the_query->the_post();
if ( \'post_type\' == \'eventtype1\' ) {
?><p><?php the_field( \'eventtype1_date\' ); ?></p><?php
echo "event type 1";
}
elseif ( \'post_type\' == \'eventtype2\') {
?><p><?php the_field( \'eventtype2_date\' ); ?></p><?php
echo "event type 2";
}
elseif ( \'post_type\' == \'eventtype3\' ) {
?><p><?php the_field( \'eventtype3_date\' ); ?></p><?php
echo "event type 3";
}
elseif ( \'post_type\' == \'eventtype4\' ) {
?><p><?php the_field( \'eventtype4_date\' ); ?></p><?php
echo "event type 4";
} ?>
</article>
一个问题是,我不确定是否可以通过post\\U类型来区分WP\\U查询数组范围之外的内容。可能是示例代码还没有输出的原因。
其次,我不确定如何对结果进行排序。如果我使用\'orderby\' => \'date\'
在WP\\u查询数组中,我按发布日期排序,而不是按实际事件日期排序。关于排序,我不确定在这种设置中是否可能?
任何提示都是非常受欢迎的。向拉尔夫致意
Update:好的,我已经解决了这个问题。使用以下代码,可以按日期对多个自定义帖子类型中的acf日期选择器字段和转发器字段中的acf日期选择器字段进行排序(查询的日期选择器必须首先放置在转发器字段中):
<article>
<?php $args = array(
\'post_type\' => array( \'event_type1\', \'event_type2\', \'event_type3\', \'event_type4\' ),
\'posts_per_page\' => -1,
\'meta_query\' => array(
\'relation\' => \'OR\',
array(\'key\' => \'event1_date_0_event1_date_day\'),
array(\'key\' => \'event2_date\'),
array(\'key\' => \'event3_date_0_event3_date_day\'),
array(\'key\' => \'event4_date\' )
),
\'meta_key\' => \'meta_value\',
\'orderby\' => \'meta_value\',
\'order\' => \'ASC\'
);
$the_query = new WP_Query( $args );
if ( $the_query->have_posts() ) : while ( $the_query->have_posts() ) : $the_query->the_post();
if ( get_post_type() == \'event_typ1\' ) {
$e1 = get_field( \'event1_date\' );
echo "Event Type 1"; ?>
<p><?php echo $e1[0][\'event1_date_day\']; ?></p><?php
}
elseif ( get_post_type() == \'event_typ2\') {
echo "Event Type 2:"; ?>
<p><?php the_field( \'event2_date\' ); ?></p><?php
}
elseif ( get_post_type() == \'event_type3\' ) {
$e3 = get_field( \'event3_date\' );
echo "Event Type 3:"; ?>
<p><?php echo $e3[0][\'event3_date_day\']; ?></p><?php
}
elseif ( get_post_type() == \'event_type4\' ) {
echo "Event Type 4:";
?><p><?php the_field( \'event4_date\' ); ?></p><?php
}
endwhile;
wp_reset_postdata();
else: ?>
<p>Error</p>
<?php endif; ?>
</article>