Müşterinin eğer sürekli güncelelyeceği bir alanı varsa bunun için custom post type kullanamlıyız. Örneğin:
- Portfolio
- Is ilani
- Musteri Yorumlari vs..
Bu sayfalardan nasıl oluşturulabileceğini görebilirsiniz: Post Types WP.org – How to create Custom Post Type
Bu plugin ile de custom post type oluşturabilirsiniz: https://wordpress.org/plugins/custom-post-type-ui/
Eğer tema üretiyorsanız custom post type plugin içine gömülmeli. Çünkü müşteri temasını değiştirdiği zaman custom post typelar onunla beraber uçup gidecektir.
Custom post type’ların çıktısını almak basit. Custom bir WP Query döndürüyorsunuz. Peki diyelim ki Etkinlikler diye bir custom post type var. Tüm etkinlikleri ekliyoruz ama zamanı geçmiş etkinlikler sitemizde görünsün istemiyoruz. Gidip her etkinliğin zamanı geçince silmek olmaz. O yüzden etkinliğin zamanı geçip geçmediğini kontrol etmemiz lazım.
Öncelikle custom post type’a bir adet tarih field’i ekliyoruz. Bunu custom field aracılığı ile ekliyoruz. Burada daha detaylı bilgi bulabilirsiniz. Daha sonra wp_query yazarken bulunduğumuz tarih bu tarihi geçmişsse bu etkinliği artık göstermiyoruz. Yukarıdaki sadece bir örnekti. Aşağıdaki kod’u örneğimize uyarlayabilirsiniz.
$today = date('Ymd');
$events = new WP_Query(
array(
'posts_per_page' => -1, // Limitsiz
'post_type' => 'event',
'meta_key'=> 'event_date',
'orderby' => 'meta_value_num',
'order' => 'ASC',
'meta_query' => array(
array(
'key' => 'event_date',
'compare' => '>=',
'value' => $today,
'type' => 'numeric'
)
)
)
);
Yukarıdaki koda meta query diyoruz. Mesela event’e yeni bir alan ekleyip bu etkinliği kimin düzenlediğini girebilirsiniz. Sonra eklentiyi düzenleyenleri kategorilere ayırıp ayrı ayrı gösterebilirsiniz yeni bir meta_query ile. Meta query’ler array içinde or veya AND ile çeşitlendirilebilyior. Örneğin Ali’nin hazırladığı geçmiş etkinlikleri listleyebilirsiniz.
WordPress’de bildiğiniz gibi en son atılmış Event en üstte çıkacak. Peki biz nasıl bu sıralamaya custom field’e göre yapabiliriz? Bunun için aşağıdaki gibi yapmanız gerekiyor
'orderby' => 'meta_value' //veya numara ise 'meta_value_num'
'meta_key' => 'meta_key_adi' // Burasi event_date ise bu keyi yazın.
Bunu tekrar anmamak olmaz. Query’nin tüm özellikleri: https://gist.github.com/luetkemj/2023628