gpt4 book ai didi

php - 按 ACF 日期选择器对 WP_Query 进行排序

转载 作者:行者123 更新时间:2023-12-04 00:52:17 25 4
gpt4 key购买 nike

我有一个“即将发生的事件”页面和一个“过去的事件”页面。每个事件都有一个名为“event_date”的自定义字段。

我想创建一个循环来显示比今天更重要的所有事件。我浏览了这些文章,但无法正常工作: http://support.advancedcustomfields.com/forums/topic/how-do-i-filter-and-sort-event-posts-with-start-and-end-date/

https://wordpress.org/support/topic/plugin-advanced-custom-fields-sorting-by-date-picker

wordpress advanced custom fields order posts by date-picker

根据我在上面三个链接中收集的内容,我会将其放入我的 functions.php 文件中:

    // CREATE UNIX TIME STAMP FROM DATE PICKER
function custom_unixtimesamp ( $post_id ) {
if ( get_post_type( $post_id ) == 'event_type' ) {
$event_date = get_post_meta($post_id, 'event_date', true);

if($event_date) {
$dateparts = explode('/', $event_date);
$newdate1 = strtotime(date('d.m.Y H:i:s', strtotime($dateparts[1].'/'.$dateparts[0].'/'.$dateparts[2])));
update_post_meta($post_id, 'unixstartdate', $newdate1 );
}
}
}
add_action( 'save_post', 'custom_unixtimesamp', 100, 2);

然后我会在我的页面模板中添加这样的内容:

<?php 
$today = time();
$args = array(
'post_type' => 'event_type',
'posts_per_page' => 5,
'meta_query' => array(
array(
'key' => 'unixstartdate',
'compare' => '>=',
'value' => $today,
)
),
'meta_key' => 'event_date',
'orderby' => 'meta_value',
'order' => 'ASC',
);

$query = new WP_Query( $args );
$event_type = $query->posts;
?>

<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>

目前还没有得到任何结果。我的帖子类型称为“event_type”,键是“event_date”。

对我哪里出错有什么想法吗?

最佳答案

感谢 svsdnb,我在这里找到了解决方案。

https://wordpress.org/support/topic/query-date-array-to-display-future-events-only

不必在 functions.php 中转换时间戳,有一种方法可以在您使用的 ACF 中专门执行此操作

current_time('Ymd')

代替

 $today = date ('Ymd')

这是我最终得到的结果(它似乎有效,并且包括今天发生的事件):

<?php 
$today = current_time('Ymd');
$args = array(
'post_type' => 'event_type',
'post_status' => 'publish',
'posts_per_page' => '0',
'meta_query' => array(
array(
'key' => 'event_date',
'compare' => '>=', // Upcoming Events - Greater than or equal to today
'value' => $today,
)
),
'meta_key' => 'event_date',
'orderby' => 'meta_value',
'order' => 'ASC',
);

$query = new WP_Query( $args );
if ( $query->have_posts() ) : while ( $query->have_posts() ) : $query->the_post();
?>

关于php - 按 ACF 日期选择器对 WP_Query 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28951370/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com