【发布时间】:2022-11-12 19:35:19
【问题描述】:
我有一个名为“按日期排序”的帖子的自定义字段。我希望能够按创建后日期对我的自定义网格进行排序除非这个自定义的“按日期排序”字段有一个值......换句话说,如果自定义字段有一个值,我希望 wordpress 采用该日期并将其用于排序目的。
现在我将我的变量定义为
$fields['customDate'] = get_field('updated_date', $post->ID);
if (!empty($fields['customDate'])) {
$fields['orderDate'] = $fields['customDate'];
} else {
$fields['orderDate'] = get_the_date('Ymd', $post);
}
为了在页面上显示日期,这很好用
<?php echo date('F j, Y', strtotime($fields['orderDate']));?>
对于我的查询,我有
$posts = get_posts(array(
'post_type' => 'post',
'numberposts' => $numberposts,
'tax_query' => $taxQueries,
'post__not_in' => $exclusions,
'orderby' => array(
'orderDate' => 'DESC'
)
));
但是,我确实意识到,如果我的自定义字段中没有数据库中所有其他帖子的值,这是行不通的。
有没有办法通过组合两个字段(创建日期和自定义字段)进行排序,以便如果自定义字段有值使用它进行排序,如果不使用帖子创建日期?
提前致谢!
【问题讨论】:
-
我回答了你的问题。一般来说,以 mysql 格式保存日期并在显示时进行转换是更好的做法。可以做更好的排序等。
标签: php wordpress sorting custom-fields