Вот вопрос, который я потратил более 3 часов, пытаясь решить, но каждый подход, который я выбрал, в итоге не работает для меня.
Все, что я пытаюсь сделать, это использовать скрипт календаря ajax с открытым исходным кодом:
и записи должны отображать все сообщения определенного типа. Для каждого из сообщений в этом типе сообщения о событии у меня есть настраиваемый метабокс со следующими настраиваемыми полями:
На самом базовом уровне мне просто нужно, чтобы каждое сообщение отображалось в соответствующем поле календаря на основе "даты начала события" и "времени начала события" и ссылки на соответствующую страницу сведений о событии.
В идеальной ситуации я искал, чтобы каждая категория событий имела свой собственный цвет и чтобы каждое событие охватывало несколько дней, если у соответствующего события есть "event_end_date"
, который отличается от даты начала.
Кто-нибудь делал это раньше и может пройти соответствующий код, чтобы получить любой из них на месте. Я чувствую, что это было бы очень ценно для сообщества WordPress.
FullCalendarэто хорошая находка.
Похоже, вам нужно написать короткий код(который я покажу, как это сделать здесь):
А затем сгенерируйте код для вызова FullCalendar внутри шорткода .
После этого вам нужно написать код для генерации массива Javascript или сделать так, чтобы он ссылался на фид JSON:
Вот код, который вы можете поместить в отдельный файл .PHP
, который вы можете назвать /fullcalendar-json-feed.php
или как хотите. Код запрашивает пользовательские типы записей с именем event
, которые будут запускаться в корневом каталоге вашего сайта и генерировать канал JSON, и предполагается, что у вас есть некоторые настраиваемые поля, необходимые для заполнения массива/канала . (Я собираюсь оставить вам остальную часть запроса и подробности настраиваемого поля. ПримечаниеЯ на самом деле не проверял это с 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;
Вы можете сгенерировать опцию массива с кодом, очень похожим на приведенный выше. Тем не менее, это займет немного кода для вас, чтобы получить право. Может быть, вы просто хотите использовать решение, которое уже построено? Вот Q & A обсуждение календарей для WordPress: