将自定义邮政类型事件加载到基于jQuery的FullCalendar中?
-
16-10-2019 - |
题
这是一个我花了3个小时来解决的问题,但是我采用的每种方法都没有为我锻炼。
我要做的就是利用此OpenSource Ajax日历脚本:
并让条目显示特定帖子类型中的所有帖子。对于此事件中的每个帖子,我都有一个自定义metabox,其中包含以下自定义字段:
- 事件类别
- 事件开始日期
- 事件开始时间
- 事件结束日期
- 事件结束时间
在最基本的级别上,我只需要每个帖子就可以根据“事件开始日期”和“事件开始时间”出现在适用的日历框中,并链接到适用的事件帖子详细信息页面。
在理想情况下,我希望将每个事件类别具有自己的颜色,并且如果适用的事件有一个 "event_end_date"
这与开始日期不同。
有没有人这样做,可以超越适用的代码以将其中的任何一个都适用。我觉得这对WordPress社区也很有价值。
解决方案
Fullcalendar 是一个很好的发现。
在我看来,你需要写 短代码 (我在这里显示如何做):
接着 生成代码以调用短代码中的全盘.
之后,您需要编写代码以生成JavaScript数组或让其引用JSON feed:
这是您可以放入独立的代码 .PHP
您可以致电的文件 /fullcalendar-json-feed.php
或您喜欢的任何东西。代码查询一种自定义帖子类型,称为 event
它将在您的网站的根目录中运行,并会生成一个JSON feed,并且假设您有一些 填充数组/feed所需的自定义字段. (我将将其余的查询和自定义字段详细信息留给您。 笔记 我实际上没有使用FullCalendar进行测试,因此可能需要一些调整):
<?php
/*
* See: https://wordpress.stackexchange.com/questions/1447/
*
*/
include "wp-load.php";
global $wpdb;
header('Content-Type:application/json');
$events = array();
$result = new WP_Query('post_type=event&posts_per_page=-1');
foreach($result->posts as $post) {
$events[] = array(
'title' => $post->post_title,
'start' => get_post_meta($post->ID,'_start_datetime',true),
'end' => get_post_meta($post->ID,'_end_datetime',true),
'allDay' => (get_post_meta($post->ID,'_all_day',true) ? 'true' : 'false'),
);
}
echo json_encode($events);
exit;
您可以生成具有与上面非常相似的代码的数组选项。不过,这将需要一些编码才能使您正确。也许您只想使用已经构建的解决方案?这是关于WordPress日历的问答讨论: