这是一个我花了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日历的问答讨论:

许可以下: CC-BY-SA归因
scroll top