it-swarm.asia

Özel Yazı Tipi Olaylarını jQuery Tabanlı FullCalendar'a Yüklemek?

İşte 3 saatten fazla bir zamandır çözmek için harcadığım bir soru, ancak aldığım her yaklaşım benim için işe yaramadı.

Tek yapmaya çalıştığım, bu açık kaynak kodlu ajax takvim komut dosyasını kullanmak:

ve girişlerin belirli bir yazı tipindeki tüm gönderileri göstermesini sağlayın. Bu etkinlik yayını içindeki gönderilerin her biri için, aşağıdaki özel alanlara sahip özel bir meta kutum var:

  • etkinlik kategorisi
  • olay başlangıç ​​tarihi
  • olay başlangıç ​​zamanı
  • olay bitiş tarihi
  • olay bitiş zamanı

En temel düzeyde, sadece her etkinliğe "etkinlik başlangıç ​​tarihi" ve "etkinlik başlangıç ​​saatini" temel alarak ilgili takvim kutusunda görünmesi ve ilgili etkinlik gönderi ayrıntıları sayfasına bağlanmam gerekir.

İdeal bir durumda, her olay kategorisinin kendi rengine sahip olmasını ve eğer geçerli olayın başlangıç ​​tarihinden farklı bir "event_end_date" varsa, her olayın birkaç gün sürdüğünü düşünüyordum.

Bunu daha önce kimse yapmış ve bu kodlardan herhangi birini yerine koymak için ilgili kodu geçmiş olabilir. Bunun WordPress topluluğu için de çok değerli olacağını düşünüyorum.

3

FullCalendarGüzel bir keşif.

Bana yazmanız gerekecek gibi görünüyor bir shortcode(burada nasıl yapıldığını göstereceğim):

Ve sonra fullCalendar öğesini shortcodeiçinde çağırmak için kodu oluşturun .

Bundan sonra bir Javascript dizisi oluşturmak için kod yazmanız veya bir JSON yayınına başvurması gerekir:

İşte kod, .PHP veya ne istersen çağırabileceğiniz bağımsız bir /fullcalendar-json-feed.php dosyasına koyabilirsiniz. Kod, web sitenizin kök dizininde çalışacak ve bir JSON beslemesi oluşturacak olan event adında özel bir gönderi türü sorgular ve bazılarının var olduğunu varsayar diziyi/beslemeyi doldurmak için gereken özel alanlar . (Sorgunun kalanını ve özel alan ayrıntılarını size bırakacağım. NotBunu gerçekten FullCalendar ile test etmedim, bu yüzden biraz değişmeye devam edebilir):

<?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;

Diziliş seçeneğini yukarıdakilere çok benzer bir kodla oluşturabilirsiniz. Yine de, bu doğru yapmanız için biraz kodlama gerektirecektir. Belki de zaten kurulmuş bir çözümü kullanmak istersiniz? İşte WordPress takvimleri hakkında bir soru ve cevap tartışması:

5
MikeSchinkel