2.9 sürümünden bu yana WordPress, özel gönderi türlerini kullanma yeteneğini tanıttı. Şimdi 3.0 sürümüyle, özel gönderi türleriniz için paneller oluşturma seçeneğiyle işler biraz daha ileri götürüldü. Bu eğitimde, Özel Gönderi türlerini sitenize WordPress sitenize nasıl uygulayacağınızı göstereceğiz.
Özel Gönderi Türleri Oluşturma – Eklentileri Kullanma
Sürüm 3.0 itibarıyla WordPress'in özel gönderi türleri oluşturmak için yerleşik bir kullanıcı arayüzü (UI) yoktur. Özel gönderi türleri oluşturmak için kullanabileceğimiz yalnızca iki seçeneğimiz var: eklentiler veya bunları temanızın functions.php dosyasına kodlamak. İlk olarak, özel gönderi türleri oluşturmak için eklentileri nasıl kullanabileceğimizi inceleyelim.
Özel Gönderi Türü Arayüzü

Özel Gönderi Türü Arayüzü, Brad Williams tarafından geliştirilen ve özel gönderi türleri ve taksonomiler oluşturmanıza olanak tanıyan bir eklentidir. Bu eklentinin en havalı özelliklerinden biri, özel gönderi türleri oluşturmak için kod üretmesidir, böylece bunu temanızın functions.php dosyasına yapıştırabilirsiniz. Bu eklentinin tuhaflıklarından biri, tüm gönderi türleriniz arasında taksonomileri paylaşamama durumudur.

Özel Gönderi Tipi Arayüzü panelinden “Yeni Ekle”ye tıklayın.

Sonra doldurmanız için birkaç seçenek verilir. “Gönderi Türü Adı”, WordPress'in bu türdeki tüm gönderileri sorgulamak için kullanacağı addır. “Etiket”, tıpkı normal “Gönderi” menüsü gibi, Kontrol Panelinizin kenar çubuğunda görüntülenecek olan addır. “Gelişmiş Seçenekleri Görüntüle”yi genişletirseniz yapılandırabileceğiniz birkaç seçenek daha göreceksiniz. Çoğu, “Genel” ve “UI Göster” gibi kendi kendini açıklayıcıdır. İlki doğru olarak ayarlandığında özel gönderi türü menüsünün kenar çubuğunda görüntülenmesine izin verir ve diğeri (UI göster) doğru olarak ayarlandığında menü panelini oluşturur.
“Rewrite”, özel gönderi türünün SEO Dostu WordPress URL'lerini (Kalıcı Bağlantılar) kullanmasını sağlayan şeydir. “Özel Yeniden Yazma Kaydırıcısı” istediğiniz herhangi bir şeye ayarlanabilir. WordPress, kalıcı bağlantıları oluşturmak için bu kaydırıcıyı kullanacaktır. Yani example.com adresinde “movies” özel yeniden yazma kaydırıcısı varsa, özel gönderi türü kalıcı bağlantınız example.com/movies şeklinde olacaktır.
WordPress "Query Var" fonksiyonu, özel gönderi türünüzün gönderilerini sorgulamanıza olanak tanır. Yani daha önce verilen örneği kullanırsak, Movies gönderi türü altında yazılmış, My First Movie Post başlığına sahip bir gönderiye erişmek için example.com/?movies=my-first-movie-post girebiliriz. Yani sorgu değişkeni şuna benzer: ?posttypename
Son olarak, özel gönderi türünüzün desteklediği farklı özellikleri, örneğin küçük resimleri/öne çıkan resmi ve özetleri seçebilirsiniz.

Özel Gönderi Türleri Oluşturma – Functions.php dosyasını kullanma

Bir eklenti olmadan özel gönderi türlerini kullanmayı tercih ederseniz, temanızın functions.php dosyasına aşağıdaki kodu ekleyin:
// Creates Movies post type
register_post_type('movies', array(
'label' => 'Movies',
'public' => true,
'show_ui' => true,
'capability_type' => 'post',
'hierarchical' => false,
'rewrite' => array('slug' => 'movies'),
'query_var' => true,
'supports' => array(
'title',
'editor',
'excerpt',
'trackbacks',
'custom-fields',
'comments',
'revisions',
'thumbnail',
'author',
'page-attributes',)
) );
Kodu inceleyelim.
register_post_type( $post_type, $args ): Bu fonksiyon iki parametre kabul eder: $post_type veya gönderi türünün adı ve $args, bir argüman dizisi.
label: Yönetici panelinin kenar çubuğunda görüntülenen gönderi türü için verilen çoğul ad.
public: true/false. Bu türdeki gönderilerin yönetici kullanıcı arayüzünün doldurulmasına izin verir.
show_ui: true/false. Bu gönderi türünü yönetmek için varsayılan bir kullanıcı arayüzü gösterir veya gizler.
capability_type: Varsayılan: post Okuma, düzenleme ve silme yeteneklerini kontrol etmek için kullanılacak gönderi türü.
hierarchical: Gönderi türü hiyerarşik mi.
rewrite: true/false. Varsayılan: true Eğer slug argümanı girilirse, gönderilere slug adı eklenir.
query_var: true/false Gönderi türü adını bir sorgu değişkeni olarak ayarlar.
destekler: Varsayılan: başlık ve yazar Gönderi türünün izin verdiği farklı destek özelliklerini ayarlar.
register_post_type() hakkında daha fazla bilgi için lütfen WordPress Codex 'i ziyaret edin.
Özel Gönderi Türü Gönderilerini Görüntüleme
Özel gönderi türünüzden gönderileri görüntülemek için döngüye aşağıdaki kodları ekleyin. "name" kısmını gönderi türünüzün adıyla değiştirin. Not: Özel gönderi türlerini index.php dosyanıza eklemeniz gerekmez. Özel bir WordPress sayfası oluşturabilir ve döngü içinde aşağıdaki sorguyu çalıştırabilirsiniz.
$query = new WP_Query( 'post_type=name' );
Birden fazla gönderi türünden gönderileri görüntülemek için yukarıdaki kodu aşağıdaki gibi değiştirin. Filmleri özel gönderi türü adınızla değiştirin.
$query = new WP_Query( array( 'post_type' => array( 'post', 'movies' ) ) );
Yukarıdaki kod, normal gönderi türünden (post) ve özel gönderi türünden (movies) tüm gönderileri gösterecektir.
İşte bu kadar. Bu eğitimde yardımcı olduğumuzu umuyoruz ve sorularınızı yorumlarda sormayı unutmayın.

Gaby Izarra
Tamam, biraz sorun yaşıyorum ve belki yardımcı olabilirsiniz... işte WordPress forum sayfam. Farklı bir temadaki bir etkinlik listesini kullandığım temaya uyarlamaya çalışıyorum.
http://wordpress.org/support/topic/php-query-for-custom-post-type-not-displaying-creating-theme-event-list?replies=1#post-5587886
dave
İki özel gönderi türü oluşturdum ancak sayfamda yalnızca ilki görünüyor. Bunu ekledim
$query = new WP_Query( array( ‘post_type’ => array( ‘post’, ‘featured’, ‘latest’ )
) );
döngümün içinde ama hiçbir şey yok. bunu nasıl çözebilirim?
Jeroen
Özel gönderi tiplerini blog arşiv sayfasına ve rss beslemesine nasıl ekleyebileceğimi biliyor musun?
WPBeginner Desteği
Evet, her iki konu hakkında da rehberlerimiz var. Lütfen WordPress'te özel gönderi türleri arşiv sayfası oluşturmayı ve özel gönderi türlerini ana WordPress RSS beslemenize eklemeyi nasıl yapacağınızı kontrol edin.
Yönetici
wizdom networks
Öncelikle, harika bir makale! Özel gönderi türlerini kod aracılığıyla uygulamaya çalışıyorum. WordPress'in mevcut belgelerinin (http://codex.wordpress.org/Function_Reference/query_posts) query_posts fonksiyonunun genel olarak kullanılmaması gerektiğini ve sorguları değiştirmek için pre_get_posts kancasının kullanıldığını belirttiği dikkate değerdir.
"Bunun yerine pre_get_posts filtresini kullanmanız ve is_main_query'yi kontrol ederek ana sorguyu değiştirmeniz şiddetle tavsiye edilir"
Tekrar, harika bir makale, paylaştığınız için teşekkürler.
Teşekkürler.
WPBeginner Desteği
Teşekkürler Wisdom, makaleyi WP_Query ile güncelledik
Yönetici
Thom Abbott
VAY BEE…web sitesini çalıştırmak için WP kullanan bir acemi için bu kesinlikle Başlangıç seviyesi bir şey değil! İstediğim Özel Sayfamı ayarlamak için muhtemelen bir WP geliştiricisine ulaşmam gerekecek.
Yayın Kadrosu
Özel Gönderi Türleri, geliştiricilerin WordPress işlevselliğini genişletmesi için oluşturuldu. Yeni başlayanlar için asla tasarlanmadı.
Yönetici
mark shirley
query_posts( ‘post_type=movies’);
?>
Bunu yirmi on bir çocuk teması sayfa şablonumda çalıştıramıyorum, film sayfası çekmek için nereye koymalıyım. Aslında gerçekten istediğim özetler. Teşekkürler Mark
muntzdesigns
Bu eklentiyi kullanırken ve yukarıdaki kodu loop.php'ye eklerken kategoriler üzerindeki kontrolü kaybedeceksiniz... özel gönderi türüm tüm kategorilere ekleniyor... herhangi bir yardım?
wpbeginner
@muntzdesigns Birden fazla döngünüzün olmasının nedeni budur… ana blog döngünüz, archive.php, category.php vb… Özel tasarlanmış bir sitede, bunun uygun şekilde çalışması için bunu kullanmanız gerekecektir.
muntzdesigns
@wpbeginner@muntzdesigns Yani yukarıdaki kodu tüm dosyalara mı eklemeliyim? (loop.php, archive.php ve category.php). Teşekkürler.
wpbeginner
@muntzdesigns Hayır. Kodu yalnızca ön sayfalara eklersiniz. Yaşadığınız sorun, özel gönderi türlerinin tüm kategorilere eklenmesiydi… Yukarıdaki kodu yalnızca ana döngüye eklemeniz gerekir. Ardından kategori arşivi, taksonomi arşivi, yazar arşivi… için yeni bir döngü oluşturun.
PriyaVerma
Güzel makale çok teşekkürler
dazuaga
Hayır, yanılmışım.
dazuaga
Boşverin: %category%/%type%/%postname% işe yarayacaktır diye düşünüyorum
dazuaga
CMS Press eklentisindeki İçerik Türü Tanımlayıcısı tam olarak ne işe yarar? Özel gönderi türüne kategori slug'ını öne eklemenin bir yolunu arıyorum (example.com/category/post_type/postname) ancak İçerik Türü Tanımlayıcısında %category%/%identifier%/%postname% kullandığımda otomatik olarak şu şekilde dönüşüyor: %categoryidentifierpostname
murphymakes
Her zamanki gibi mükemmel bilgiler. teşekkürler
whimba
I like Custom Post Type UI. It’s light and easy to use but is limited in functionality. So I created my own – http://wordpress.org/extend/plugins/mp-former/. You can try it
simplywendz
Bu, WordPress'te özel gönderi oluşturmak için çok harika bir eğitim. Adımlar ayrıntılı olarak verilmiş, kolayca takip edilebilir. Bu büyük, büyük bir yardım!
hoss9009
Ben de bunu merak ediyordum!!
Cupbearer
Vay be, tüm CMS Basın işini halletmiştim ama gönderilerde nasıl görüneceğini anlayamamıştım. Sanırım o kadar uzun zamandır ortalıkta ki herkes zaten bilindiğini varsayıyor. Özel Gönderi Türümün Döngüde görünmesini sağlamak için Mükemmel Cevap.
Jerry Craig
Kadehçi
Noel Boaz
Teşekkürler, Özel gönderi türümü ana sayfada göstermeme çok yardımcı oldu. Kesinlikle yer imlerine eklendi, teşekkürler.
Ed
Eklentiyi denedim, çok etkileyici. Ancak, temalarımın 'Sayfa' özniteliklerinden bir sayfa özniteliğini görünür hale getirmeye çalışıyorum, yani tam genişlikte sayfa seçeneğini kullanma yeteneği. Eklentinizin yalnızca Gönderi türü düzenlerinden öznitelikleri çektiğini, Sayfa türü düzenlerinden değil mi varsaymalıyım? Tek istediğim, bir gönderiyi tam, önceden belirlenmiş bir şablona ayarlama seçeneğine sahip olmak.
Yine de harika bir iş çıkarmışsınız – bunu çok kullanacağım.
Şerefe
Ed
Simon
Eklenti yolunu denedim ama gönderiyi gösteremedim. Belki de loop.php dosyasını bulamadığım içindir.
Neyse, çok teşekkürler, yakında işe yarayacağına eminim.
WordPress ile yapılabilecek harika bir şeyin, drupal'daki views modülü gibi özel içerik görünümleri oluşturma olasılığına sahip olmak olduğunu söylemek istiyorum.
Pods ve Pods CMS adında bunun mümkün olmasını sağlayan bir eklenti olduğunu biliyorum. Eğer benim gibi hiç anlamıyorsanız, wpbeginner'da bir gönderide geliştiriciden yardım isteyebilirsiniz. Eminim birçok kişi bunu sevecektir. Görünümleri sunmak, bir cms'yi gerçekten dinamik bir cms yapan şeydir.
Yayın Kadrosu
Döngü.php temanızda olmayabilir. Döngü ayrıca index.php, archive.php, category.php vb. dosyalarınızda da bulunabilir. İsterseniz özel bir döngü de oluşturabilirsiniz.
Yönetici
Peter
İyi bir eğitim, paylaştığınız için teşekkürler.
Bununla ilgili bir sorum var.
functions.php aracılığıyla özel bir gönderi türü oluşturdum (bir takvim) ve bu gönderi türünün admin arayüzünde özel bir meta kutusu var. Bu meta kutusu bir alanda jQuery kullanıyor.(http://jqueryui.com/demos/datepicker/).
Bu tarih seçicinin çalışması için gerekli betikleri yerleştirmem gerekiyor.
add_action(‘admin_enqueue_scripts’,’enqueue_my_scripts’);
çalışıyor ancak betiklerim tüm admin arayüzünde yükleniyor. (bu varsayılan WP admin jquery ile çakışıyor)
Bu yüzden ihtiyacım olan şey özel gönderi türüm için kancadır.
bu:
add_action(‘register_post_type’,’enqueue_my_scripts’);
çalışmıyor çünkü register_post_type bir kanca değil.
Öyleyse, özel bir gönderi türü için kanca nedir?
Amanda
Betiği kaydetmeden önce fonksiyon tanımınıza şunları eklemeyi deneyebilirsiniz:
if(is_admin()) return;Yani şöyle bir şey:
function some-function(){
// admin sayfalarında buna ihtiyacımız yok, bu yüzden...
if(is_admin()) return;
// özel betiği kaydet
wp_enqueue_script( 'some-script' );
}
Evan
Her içerik türünü döngüde nasıl gösterebilirim? Yani, neredeyse Tumblr gibi. Bir resim paylaşırsam... döngüdeki kodu özelleştirmem gerekiyor – aynı şey bir bağlantı paylaştığımda da geçerli.
Yayın Kadrosu
Gönderide görebilirsiniz, hem özel gönderi türlerini hem de gönderileri tek bir döngüde gösterme seçeneği var...
Yönetici
Michael
Özel türümün gönderilerini sorgulamak için döngüyü çalıştıramıyorum. Örneğiniz yeterince kolay görünüyor, bu yüzden şunu denedim: $var = query_posts( ‘post_type=sponsor’);
Sonra bir döngü başlattım
while ($var ->have_posts()) : $var ->the_post();
Bir şeyler yap
endwhile;
bu bir php hatası döndürüyor:
Fatal error: single-sponsor.php dosyasının 22. satırında nesne olmayan bir nesne üzerinde üye fonksiyonu have_posts() çağırma
22. satır, while döngüsünün olduğu satırdır.
Fikirler? Neyi yanlış yapıyorum?
Romero
Özel alan için bir etiket oluşturmayı denedim ve özel türün döngüsünde get_the_tags kullandığımda hiçbir şey yazdırmıyor.
Herhangi bir öneriniz var mı?
Oca
Bu yeni özellikten çok heyecanlıyım ^-^ Güzel bir video yapmışsınız. Ancak örneğinizde, neden özel gönderi türleri kullanıyorsunuz da gönderiler için kitaplar ve filmler gibi bir kategori oluşturmuyorsunuz? Bu şekilde özel gönderi türünün tüm zahmetinden kurtulursunuz.
Yayın Kadrosu
Birincisi, şeyleri farklı bir şekilde düzenlemenizi sağlar. İkincisi, farklı seçeneklere sahip tamamen farklı bir yazma paneline sahip olabilirsiniz. Çok daha fazla özelleştirmeye olanak tanır...
Yönetici
Sandra
Bu harika makale için teşekkürler! Ben gerçek bir wp acemisiyim ve belki bu konuda bana yardımcı olabilirsiniz:
"display archives by cat"-plugin by kwebble ile yapılabildiği gibi, kenar çubuğunda özel bir gönderi türünün arşivlerini görüntülemek mümkün müdür?
Yayın Kadrosu
Evet, özel gönderi türlerini arşiv olarak görüntülemek mümkündür. Belirli bir gönderi türünden gönderileri veya kategorileri görüntülemek için kenar çubuğunda özel bir döngü oluşturmanız yeterlidir.
Yönetici
lukeMV
Özel gönderilere seçenek ekleme konusunda anlaşılması kolay rehberler var mı? Örneğin, bir film drama, komedi, korku ise… bu seçenekleri özel gönderi düzenleme panelinin İÇİNDE onay kutuları olarak mı? Bunun için bir rehber veya eklenti bulamıyorum.
Paul
Merhaba, Harika bir makaleydi. Soruma cevap verebileceğinizi umuyordum.
Son birkaç satırda şunlar var:
bu, filmler adlı tüm gönderileri ve gönderi türlerini döndürür.
Hem 'filmler' adlı gönderi türlerini hem de 'filmler' kategorisindeki gönderileri döndürmeyi biliyor musunuz, ancak bu kategoriye sahip olmayan diğer tüm gönderileri hariç tutuyor musunuz?
Yayın Kadrosu
query_posts için kategori parametrelerini kullanırsınız - http://codex.wordpress.org/Function_Reference/query_posts
Yönetici
Walter
Bir adım geri gidebilir misiniz: İlk etapta özel gönderi türlerine neden ihtiyacım var? Kullanım durumu nedir?
Yayın Kadrosu
Özel Gönderi Tipleri, WordPress'i bir Blog'dan daha fazlası için kullanan kullanıcılar için iyidir, örneğin CMS. Diyelim ki portföyünüzün ve blogunuzun olduğu bir siteye sahip olmak istiyorsunuz. Açıkçası bloglarınızın portföyünüzle aynı görünmesini istemezsiniz. İşte o zaman özel gönderi tipleri kullanışlı olur. Bu, WordPress'i bir sonraki seviyeye taşımak için çok yönlü bir özelliktir. Ortalama blog kullanıcısı için muhtemelen özel gönderi tiplerine ihtiyacı yoktur.
Yönetici
Tracy B.
Tamam, ancak bununla şeyleri kategorize etmek arasındaki farkı hala anlamaya çalışıyorum. İnsanlar için ayrı sayfaların yalnızca “güncel olaylar” kategorisini ve diğerinin “projeler” kategorisini veya her neyse listelediği pek çok site oluşturdum. Bu nasıl daha iyi?
Yayın Kadrosu
Bu organizasyon açısından daha iyi. Belirli bir gönderi türü için özel taksonomi, yazı paneli vb. bulundurabilirsiniz.
Chris
Bunu, gönderi türleriyle sıradışı bir şey göstermek yerine, eski "filmler ve kitaplar" örneğini kullanmak yerine daha faydalı olacağını düşünmekten alamıyorum.
Gönderi türleriyle bir yan blog veya daha pratik bir şey nasıl olur? Tüm bunlar, WP Codex'in sonunda zaten orada değilse, orada olacak olanı yeniden ifade ediyor.
Yayın Kadrosu
Bu şekilde hissettiğiniz için üzgünüz Chris. WP Codex bunu nasıl yapacağınızı gösteren bir video yayınlamayacaktır. Özel gönderi türleri için hangi isimleri kullandığımızın bir önemi yok, önemli olan onları nasıl ekleyeceğimizdir. Özel gönderi türü hakkında bir yazı yazmak için olağanüstü bir site oluşturmayacağız. Eğer bu bilgiyi arıyorsanız, muhtemelen bunu kendiniz yapmanız daha iyi olacaktır. Bu blog hala başlangıç seviyesindeki kullanıcıların ihtiyaçlarını karşılamalıdır, bu yüzden eklenti yöntemini paylaştık.
Yönetici
Kevin Elliott
Bu WordPress 2.9'da çalışır mı yoksa sadece 3.0 için mi?
3.0'ı denedim, ancak bazı tuhaflıklar oldu ve etkinleştirildiklerini belirtenler dahil hiçbir eklentim etkinleşmedi. Çok garip bir durumdu!
-Kevin
Yayın Kadrosu
Bu 3.0 ile çalışır, bu yüzden yalnızca 3.0'da kullanın. WordPress 3.0'ı yeniden yüklemeyi deneyin, birkaç siteyi üzerinde çalıştırıyoruz.
Yönetici
Marc
Videoyu az önce izledim...
Her şeyi çalıştırmak için php dosyalarını düzenlememiz (yani sabit kodlama) gerektiği doğru mu?
Yayın Kadrosu
Hayır, ikisinden birini yapmanız gerekiyor. Videomuzda her iki yolu da gösterdik. Ya sabit kodlama yolunu ya da eklenti yolunu yapabilirsiniz.
Yönetici
Marc
Allright, I see, thnx!
O zaman sanırım zorlu kodlama yoluyla başladın? O zamanlar sadece tüm kodlama şeylerini gördüğümde bıraktım. Bu yüzden eklenti yolunu görmedim sanırım…
Rilwis
Çok güzel makale. Özel Gönderi Türü Arayüzü eklentisi, gönderi türlerini kaydetmenin ham PHP koduna çok benzer seçeneklere sahiptir, bu geliştiriciler için harikadır.
Özel gönderi türleriyle çalışmak için birçok kullanışlı eklenti tanıttığınız için teşekkürler.
Kaye Media
Harika makale, Wp3'ü sabırsızlıkla bekliyorum =)
Bryan
WordPress'in özel gönderi tiplerini doğrudan wp çatısına entegre etmesinden memnunum. Ancak, Magic Fields veya Flutter gibi mevcut eklentileri kullanmaktan nasıl daha iyi olduğunu göremiyorum. Bu eklentilerle aynı etkiyi elde edersiniz, ayrıca kurulumu kolay özel alanlar, farklı türlerde ve verilerinizi girme ve görüntüleme esnekliği sunar. wp 3.0, kutudan çıktığı haliyle herhangi bir şeyi destekliyor mu?
Yayın Kadrosu
Özel Alanlar ve arka uçtaki hemen hemen her şey için Özel Gönderi Türleri ile bir kullanıcı arayüzü oluşturabilirsiniz. Bu eklentilerin kullanıcılar için işleri çok kolaylaştırdığı doğru, ancak bu eklentilerden herhangi biri geliştirme aşamasında başarısız olursa, başka seçeneğiniz kalmaz.
Yönetici
Bryan
Haklısın. Beta sürümüyle biraz oynadım ama sanırım yeterince oynamadım. O yöne doğru giderse heyecan verici olur. Bu eklentileri kullanma konusunda deneyim kazandığımdan beri artık neredeyse onlarsız bir site yapmıyorum
Bu yüzden tüm bu araçların orijinal uygulama içinde mevcut olması ve yönetilmesi harika olurdu. Bunun daha iyi bir arka uç yönetimine yol açabileceğini ve belirli bir eklentiyi destekleyen küçük bir grup yerine daha fazla insanın katkıda bulunmasını teşvik edebileceğini görebiliyorum.
Ian
Sanırım özel gönderi türü kodunun bazı kısımlarını kasıtlı olarak kod olarak bırakmışlar. Ortalama kullanıcının bununla uğraşmasını sağlamak için.
Abdul Wahid
Bu harika bir makale
ravalde
Yirmi onbir'de hiçbir taksonomi görüntüleyemiyorum, ayrıca baştan sona gösteren bir öğretici de bulamıyorum, hepsi yirmi on'a ve döngüye odaklanıyor gibi görünüyor