gpt4 book ai didi

php - 查询日期数组以仅显示 future 事件 - PHP

转载 作者:行者123 更新时间:2023-11-29 03:00:36 26 4
gpt4 key购买 nike

在 Wordpress 中,我创建了一个名为“事件”的自定义帖子类型,并使用高级自定义字段添加到自定义字段中。我只有基本字段,因为我们对日历的需求本身就是基本的。

字段是:开始日期、结束日期、开始时间、结束时间、位置、标题

我正在尝试使用基本上是“如果结束日期大于今天的日期,则显示帖子”的数组来查询帖子。

问题是高级自定义字段有一个内置的 DatePicker,它将日期格式设置为 YYYYMMDD 而不是像 PHP 那样的 YYYY-MM-DD。这是我今天的代码:

if (isset($_GET['_m'])) {

$current_month = $_GET['_m'];
$current_day = date('d'); // the actual day
$current_year = $_GET['_y'];
$future_year = 2016;

$startday = $current_year.$current_month.$current_day;
$endday = $future_year.$current_month.$current_day;

echo $startday;
echo $endday;

}
$args = array(
'post_type' => 'events',
'post_status' => 'publish',
'posts_per_page' => '10',
'meta_key' => 'event_date_ends',
'meta_query' => array(
'key' => 'event_date_ends',
'compare' => '>=',
'value' => $startday,
'type' => 'DATE'
),
'orderby' => 'meta_value_num',
'order' => 'ASC',
'paged' => ( get_query_var('paged') ? get_query_var('paged') : 1 ),
);

我已经尝试了至少 20 种变体和技术,最终结果是 A) 返回所有已发布的“事件”或 B) 未返回任何已发布的“事件”。

由于各种原因,我试图避免使用日历插件,主要是因为大多数资源都很大,而且客户希望特别列出返回值,但我一直无法找到一个日历插件那个可定制的。从视觉上看,它已获得批准,但过去的事件不会自行自动删除。

更新:

我能够将高级自定义字段日期转换为 YYYY-MM-DD 并使用此代码,但它返回所有“事件”

$args = array(
'post_type' => 'events',
'post_status' => 'publish',
'posts_per_page' => '10',
'meta_query' => array(
'key' => 'event_date_ends',
'compare' => '>=',
'value' => date(Y-m-d),
'type' => 'DATE'
),
'orderby' => 'meta_value_num',
'order' => 'ASC',
'paged' => ( get_query_var('paged') ? get_query_var('paged') : 1 ),
);

最佳答案

原来我只需要通过 functions.php 将其转换为 unix 时间戳就可以了。

函数.php

function custom_unixtimesamp ( $post_id ) {
if ( get_post_type( $post_id ) == 'events' ) {
$startdate = get_post_meta($post_id, 'event_date_begins', true);

if($startdate) {
$dateparts = explode('/', $startdate);
$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);

然后查询

$today = time();    

$args = array(
'post_type' => 'events',
'post_status' => 'publish',
'posts_per_page' => '10',
'meta_query' => array(
array(
'key' => 'unixstartdate',
'compare' => '>=',
'value' => $today,
)
),
'meta_key' => 'event_date_begins',
'orderby' => 'meta_value',
'order' => 'ASC',
'paged' => ( get_query_var('paged') ? get_query_var('paged') : 1 ),
);

希望其他人能发现这有用。

关于php - 查询日期数组以仅显示 future 事件 - PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24289094/

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