Özel Gönderi Türleri Oluşturma

Yayınlanan: 2016-08-23

WordPress bir süredir “ sadece bir blog ” platformu değil. Uygun bir içerik yönetim sistemine (CMS) dönüşmesine yardımcı olan temel özelliklerden biri Özel Gönderi Türleridir .

Bu, özel gönderi türleri (CPT) konusundaki 3 bölümlük bir dizinin ilk makalesidir. Bunlar sonraki iki bölümde tartışacağımız konular:

  • Özel Taksonomiler
  • Özel gönderi türlerini görüntüleme (şablonlar ve sorgulama)

Ancak şimdilik, özel gönderi türlerine ve bunların nasıl kurulacağına daha yakından bakalım.

Özel gönderi türü nedir?

Varsayılan olarak WordPress şu gönderi türlerini kullanır:

  • Postalamak
  • Sayfa
  • Ek dosya
  • Revizyon
  • Menü seçeneği

Peki, özel gönderi türü nedir? Özel gönderi türü, temel olarak özel tanımlanmış parametrelere sahip bir WordPress gönderisidir (özel alanlar, özel kategori/etiket yapısı,…). Özel gönderi türlerinin klasik örnekleri şunlardır: kitaplar, incelemeler, referanslar, ekip üyeleri, portföyler vb. Ancak, oluşturduğunuz içeriğin türünü belirten herhangi bir şey için kullanabilirsiniz.

Neden birini kullanasın?

Farklı "yazı türlerini" ayırmak için normal WP gönderilerini kullanabilir ve kategorileri ve etiketleri kullanabilirsiniz. Ancak bu ideal değildir ve yolda komplikasyonlara yol açabilir. Özel bir gönderi türü kullanmak isteyebileceğiniz birkaç neden:

  • Bazı içerikleri WordPress'teki diğer mevcut gönderi türlerinden ayırmak istiyorsanız
  • Göndermek istediğiniz içeriğe özel bazı özel alanlara ihtiyacınız var
  • İçeriği diğer gönderi türlerinden (yazılar veya sayfalar gibi) farklı şekilde görüntülemeniz gerekir.

Diyelim ki bir yemek blogu yazıyorsunuz. Genellikle restoran eleştirileri yayınlarsınız, ancak kendi tariflerinizi de yayınlamak istersiniz. Tarifler, mükemmel bir özel gönderi türü oluşturacaktır, çünkü muhtemelen normal bir gönderiden farklı bir düzene ihtiyacınız olacaktır. Örneğin, malzemeler gibi bazı özel alanlar da olabilir. Bir tarif CPT'sinin tanıtılmasıyla, blog bölümü yalnızca normal gönderinizi içerecek ve tariflerinizin kendi bölümleri (kendi tarif arşiv sayfası) olacaktır. Bu, yalnızca tariflerinize bakmak isteyen ziyaretçilerin işini kolaylaştıracaktır .

Bu yazı dizisinde Shaka temamız için referanslar CPT oluşturacağız. Diyelim ki bir kullanıcı, her müşteri referansını görüntüleyebileceği bir sayfaya sahip olmak istiyor. Bu özel gönderi türüne birkaç özel alan eklemek istiyor ve ayrıca bu referansları görüntülemek için farklı bir düzen istiyor. Önce özel bir gönderi türünün nasıl kaydedileceğine bir göz atalım.

Özel bir gönderi türünü nasıl oluşturabilirsiniz?

Yeni bir özel gönderi türü oluşturmanın iki yolu vardır.

İlk seçenek, sizin için özel gönderi türünü kaydedecek bir eklenti kullanmaktır. Bu yöntem, PHP koduna aşina olmayan kullanıcılar için iyidir. Yalnızca gerekli ayrıntıları girersiniz ve gerisini eklenti halleder.

İkinci yöntem, özel gönderi türünü manuel olarak kaydetmektir. Bu, bazı kodlar yazmanız gerektiği anlamına gelir, ancak panik yapmayın, oldukça basit ve ayrıca size güzel bir numara göstereceğim.

Eklenti ile özel bir gönderi türü oluşturun - kolay yol

Sitenize hızlı ve kolay bir şekilde özel bir gönderi türü eklemek istiyorsanız, bu tür işlevsellik sunan bir eklenti kullanmalısınız. Muhtemelen bunu yapmak için en popüler eklenti Özel Yazı Tipi Kullanıcı Arayüzü'dür, ücretsiz ve kullanımı kolaydır. Ayarlayalım:

  1. Wp-admin kontrol panelinizden Özel Posta Türü UI eklentisini kurun ve etkinleştirin,
  2. Eklentiyi etkinleştirdiğinizde, CPT UI yönetici menü öğesi mevcut olacaktır. CPT Kullanıcı Arayüzü -> Gönderi Türlerini Ekle/Düzenle'ye gidin,
  3. Burada CPT'nizi özelleştirmek için uygulayabileceğiniz birçok ayar bulacaksınız. Bu yazıda hepsini ayrıntılı olarak ele almayacağız. Ancak, her ayarın ne yaptığını açıklamak için her ayar etiketinin yanında bir ipucu simgesi vardır. Kullanım durumumuz için ihtiyacımız olan şeyleri ayarlayalım (referans CPT),
  4. Bilgiyi girin: referanslar, çoğul etiket: Referanslar ve tekil etiket: Referans,
  5. Daha doğru etiketler ayarlamak için Ek etiketleri düzenle düğmesini tıklayabilirsiniz. Ama bunu atlayabilir ve daha sonra bir sorun görürsek geri gelebiliriz,
  6. Kullanım durumumuz için tüm varsayılan ayarlar uygundur, yalnızca Özel Alanlar için Destek ekleyeceğiz (Destekler bölümünde Özel Alanlar onay kutusunu seçin),
  7. Özel gönderi türünü oluşturmak için Gönderi Türü Ekle'ye tıklayın.

Özel gönderi türünü oluşturduğumuz anda, yeni bir Görüşler wp-admin kontrol paneli menü öğesi belirir. Artık özel gönderi türünü (Başlık, Düzenleyici, Öne çıkan görsel ve Özel alanlar) oluşturduğumuzda seçilen tüm alanlarla yeni referanslar oluşturabiliriz.

CPT - Yeni Görüş Ekle

Bu özel gönderi türüne bir sınıflandırma da koyabiliriz, ancak bunu bir sonraki makalede ele alacağız.

Manuel olarak özel bir gönderi türü oluşturun - kodlama dahil

Kendinize şunu sorabilirsiniz: Bir eklenti ile özel bir gönderi türü oluşturabiliyorsanız, neden biri bunu kodla manuel olarak oluşturmak istesin ki?

Eklenti ile bir tane oluşturma yeteneği kesinlikle çok uygundur , ancak bunu kod yoluyla yapmak isteyeceğiniz durumlar vardır. Örneğin, müşteriniz için bir site geliştiriyorsanız ve müşterinin bu ayarları değiştirmesini istemiyorsanız veya sitesine bir eklenti daha yüklemek istemiyorsanız. Ayrıca, birden fazla sitede kullanmak üzere bir tema (veya bir alt tema) oluşturmak istiyorsanız, her site için eklenti adımlarını tekrarlamaktansa özel gönderi türünü koda kaydettirmek daha kolaydır . Her yöntemin bazı artıları ve eksileri vardır, bu nedenle durumunuzda en iyisinin ne olduğuna karar vermelisiniz.

Özel bir gönderi türü oluşturma kodu doğrudan bir temaya yerleştirilebilir ( function.php içinde). Veya yeni bir eklenti oluşturabilir ve CPT kodunu oraya koyabilirsiniz. Bu aynı zamanda WordPress topluluğunda bölücü bir sorudur. Bir taraf eklentide bulunması gerektiğini söylüyor, böylece temayı değiştirirseniz CPT'nin verileri kalır (ancak çıktı stilsizdir ve yeni temada iyi görünmez). Ve diğer taraf, temaya özel olduğu ve ayrıca bu tema için özel olarak tasarlanmış olduğu için CPT kodunu doğrudan temaya koymanın daha iyi olduğunu düşünüyor.

Şahsen, stili (temayı) işlevsellikten (eklentiler) ayırmanın her zaman daha iyi olduğunu ve bu nedenle CPT kaydı için yeni bir eklenti oluşturmanın daha iyi bir seçenek olduğunu düşünüyorum. CPT çıktısının iyi görünmesini sağlamak için yeni temaya stil eklemek, yeni bir temaya geçiş nedeniyle CPT verilerini kaybetmekten daha kolaydır.

Kodlu özel bir gönderi türü kaydedin

Düzgün bir numara sözü verdim, değil mi? Aslında, kod aracılığıyla özel bir gönderi türü kaydedebilmek için kod yazmanıza gerek yok . Bu garip gelebilir, ama bu doğru. CPT kaydı için gereken kodu oluşturmak için bu aracı createwp.com adresinde kullanabilirsiniz. Tek yapmanız gereken biraz veri girmek ve kodu oluşturmak. Bunu referanslarımız için yaptım ve ortaya çıkan şu oldu:

 // Register Custom Post Type function custom_post_type_testimonials() { $labels = array( 'name' => _x( 'Testimonials', 'Post Type General Name', 'text_domain' ), 'singular_name' => _x( 'Testimonial', 'Post Type Singular Name', 'text_domain' ), 'menu_name' => __( 'Testimonials', 'text_domain' ), 'name_admin_bar' => __( 'Testimonials', 'text_domain' ), 'archives' => __( 'Item Archives', 'text_domain' ), 'parent_item_colon' => __( 'Parent Item:', 'text_domain' ), 'all_items' => __( 'All Items', 'text_domain' ), 'add_new_item' => __( 'Add New Item', 'text_domain' ), 'add_new' => __( 'Add New', 'text_domain' ), 'new_item' => __( 'New Item', 'text_domain' ), 'edit_item' => __( 'Edit Item', 'text_domain' ), 'update_item' => __( 'Update Item', 'text_domain' ), 'view_item' => __( 'View Item', 'text_domain' ), 'search_items' => __( 'Search Item', 'text_domain' ), 'not_found' => __( 'Not found', 'text_domain' ), 'not_found_in_trash' => __( 'Not found in Trash', 'text_domain' ), 'featured_image' => __( 'Featured Image', 'text_domain' ), 'set_featured_image' => __( 'Set featured image', 'text_domain' ), 'remove_featured_image' => __( 'Remove featured image', 'text_domain' ), 'use_featured_image' => __( 'Use as featured image', 'text_domain' ), 'insert_into_item' => __( 'Insert into item', 'text_domain' ), 'uploaded_to_this_item' => __( 'Uploaded to this item', 'text_domain' ), 'items_list' => __( 'Items list', 'text_domain' ), 'items_list_navigation' => __( 'Items list navigation', 'text_domain' ), 'filter_items_list' => __( 'Filter items list', 'text_domain' ), ); $args = array( 'label' => __( 'Testimonials', 'text_domain' ), 'labels' => $labels, 'supports' => array( 'title', 'editor', 'thumbnail', 'custom-fields' ), 'hierarchical' => false, 'public' => true, 'show_ui' => true, 'show_in_menu' => true, 'menu_position' => 5, 'show_in_admin_bar' => true, 'show_in_nav_menus' => true, 'can_export' => true, 'has_archive' => true, 'exclude_from_search' => false, 'publicly_queryable' => true, 'capability_type' => 'page', ); register_post_type( 'testimonials', $args ); } add_action( 'init', 'custom_post_type_testimonials' );

… Projelerinizde kullanabileceğiniz tamamen geçerli bir PHP kodu. Daha önce tartışıldığı gibi, bu kodu yeni oluşturulan bir eklentiye koyabilir veya temanın function.php dosyasına koyabilirsiniz. Sadelik adına ikincisini seçtim. Bu kodu temanın function.php dosyasına koydum ve Testimonials wp-admin menüsü çıktı ve artık yeni referanslar oluşturabilirim (tıpkı yukarıdaki plugin metodunda olduğu gibi).

Özel gönderi türünüz için wp-admin menüsünde görüntülenecek farklı bir simge de ayarlayabilirsiniz. $args dizisine şu satırı eklemeniz yeterlidir: 'menu_icon' => 'dashicons-businessman' . Tüm olası simgelerin bir listesini burada bulabilirsiniz: WordPress Dashicons. (Bu ipucu için Alexander'a teşekkürler).

Kodu daha yakından inceleyelim:

  • CPT kayıt işleminin tamamı, bu kod satırıyla snippet'in sonundaki init WP kancasına custom_post_type_testimonial() işlevinde kapsüllenir: add_action( 'init', 'custom_post_type_testimonials' ); . Bu add_action çağrısı, her şeyi harekete geçiren ve WordPress'in sihrini yapmasını sağlayan son çağrıdır.
  • İşlev içindeki ilk kod bloğu, bu özel gönderi türü için çeviri dizelerini tutan $labels adlı bir veri dizisidir.
  • İkinci blok, CPT kaydı için kullanılan bir dizi argümandır, burada CPT için tüm ayarları tanımlayabilirsiniz. CPT'nin hangi alanları desteklemesi gerektiği, herkese açık olup olmadığı, wp-admin menüsünün konumu, bir arşiv sayfası olup olmadığı vb. Seçeneklerin tamamını görmek için lütfen bu WP kodeksi sayfasını ziyaret edin.
  • Fonksiyonun son satırı register_post_type( 'testimonials', $args ); . Bu, yukarıdaki $args içinde belirttiğimiz ayarlarla 'referanslar' özel gönderi türünü kaydedecektir.

Bu kadar! Biraz PHP koduyla özel bir gönderi türü kaydettik.

Oluşturulan kodda değiştireceğim tek gelişme, kaçan uluslararasılaştırma işlevlerini kullanmak olacaktır. Bu yüzden _x() ve __() yerine esc_html_x() ve esc_html__() . Çıktı değerlerinden - çeviri dizelerinden bile - kaçmak her zaman iyidir, ancak bu başka bir blog gönderisinin konusu.

Serideki sonraki makale: Özel Bir Taksonomi Nasıl Oluşturulur.