【发布时间】:2016-06-10 23:50:19
【问题描述】:
我正在使用高级自定义字段专业版来存储和显示有关房地产销售日期的信息。这些都保存在一个转发器字段中,该字段中的每一行都有一个开始时间、结束时间和一个日期。我需要在转发器字段行中显示按日期排序的信息。目前它是按修改日期排序的。我已经尝试了几种解决方案,但似乎没有一个适合我需要做的事情。
这是我目前拥有的:
<?php
$latestes = new WP_Query(
array(
'post_type' => 'estate-sales',
'post_status' => 'publish',
'posts_per_page' => 10,
'orderby' => 'modified',
'order' => 'DESC'
)
);
while ( $latestes->have_posts() ) : $latestes->the_post();
echo '<li class="frontpage-esale"><a href="';
the_permalink();
echo '">';
the_title();
echo ' ';
$rowses = get_field('estate_sale_dates');
$first_row = $rowses[0];
$first_row_date = $first_row['es-date'];
$first_row_start = $first_row['es-start-time'];
$first_row_end = $first_row['es-end-time'];
echo ' - ';
if ($first_row_date) {
echo date('F j, Y',strtotime($first_row_date));
}
else {
echo 'Sale Dates TBA';
}
endwhile;
wp_reset_query();
?>
搜索解决方案时最常见的答案是执行以下操作:
$latestes = new WP_Query(
array(
'post_type' => 'estate-sales',
'post_status' => 'publish',
'posts_per_page' => 10,
'orderby' => 'modified',
'order' => 'DESC'
)
);
while ( $latestes->have_posts() ) : $latestes->the_post();
$repeater = get_field('estate_sale_dates');
foreach( $repeater as $key => $row )
{
$column_id[ $key ] = $row['es-date'];
}
array_multisort( $column_id, SORT_ASC, $repeater );
foreach( $repeater as $row ) {
echo '<li class="frontpage-esale"><a href="';
the_permalink();
echo '">';
the_title();
echo ' ';
$rowses = get_field('estate_sale_dates');
$first_row = $rowses[0];
$first_row_date = $first_row['es-date'];
$first_row_start = $first_row['es-start-time'];
$first_row_end = $first_row['es-end-time'];
echo ' - ';
if ($first_row_date) {
echo date('F j, Y',strtotime($first_row_date));
}
else {
echo 'Sale Dates TBA';
}
}
endwhile;
wp_reset_query();
?>
但是,当我尝试这样做时,它会列出每次销售 3 次,根本不按日期订购,如果没有输入日期(只需默认为销售日期 TBA),它就会引发错误。
非常感谢任何帮助。
【问题讨论】:
-
你通过
'orderby' => 'modified', order=> 'DESC'的任何原因? -
只是通用格式来启动 WP_Query 并拉出所有帖子。
-
由于它是转发器字段中的子字段,因此在 WP_Query 数组中尝试按 $key 和元数字顺序排序时不起作用。
标签: php wordpress date advanced-custom-fields