web-dev-qa-db-ja.com

カスタム投稿タイプのイベントをjQueryベースのFullCalendarにロードする

これは私が3時間以上かけて解決しようとした質問ですが、それぞれのアプローチは私のためにうまくいかないことになります。

私がやろうとしているのは、このオープンソースのAjaxカレンダースクリプトを利用することだけです。

エントリに特定の投稿タイプ内のすべての投稿を表示させます。このイベント投稿タイプ内の各投稿に対して、次のカスタムフィールドを持つカスタムメタボックスがあります。

  • イベントカテゴリ
  • イベント開始日
  • イベント開始時刻
  • イベント終了日
  • イベント終了時刻

最も基本的なレベルでは、「イベント開始日」と「イベント開始時刻」に基づいて各投稿を該当するカレンダーボックス内に表示し、該当するイベント投稿の詳細ページにリンクするだけです。

理想的な状況では、各イベントカテゴリに独自の色を付け、該当するイベントの開始日とは異なる"event_end_date"がある場合、各イベントを複数日にわたるようにします。

誰かが以前にこれをしたことがあり、適切なコードを貼り付けてこれらのいずれかを適切に配置することができます。これはWordPressコミュニティにとっても非常に価値があると思います。

3

FullCalendarはすてきな検索です。

あなたはショートコードを書く必要があるように私に見えます(これをここで行う方法を示します):

  • WordPress 3.0 のナビゲーションメニューに投稿のアーカイブを追加する

そして、 shortcode 内でFullCalendarを呼び出すコードを生成します。

その後、Javascript配列を生成するコードを記述するか、JSONフィードを参照させる必要があります。

スタンドアロン.PHPファイルに配置できるコードは次のとおりです。このファイルは/fullcalendar-json-feed.phpまたは任意の名前で呼び出すことができます。コードはeventと呼ばれるカスタム投稿タイプをクエリします。これはWebサイトのルートディレクトリで実行され、JSONフィードを生成し、配列/フィードの設定に必要な カスタムフィールドがあることを前提としています(残りのクエリとカスタムフィールドの詳細はお任せします。 t実際にこれを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のカレンダーに関するQ&Aディスカッションは次のとおりです。

5
MikeSchinkel