WordPress özel gönderi türüne taksonomi nasıl eklenir
Bu makalede, özel bir sevkiyat türüne mevcut taksonominin nasıl ekleneceği ve Taksonomi Arşivi sayfasında özel bir gönderi türünün nasıl yapılacağı tartışılmaktadır. Kendi çalışmalarımıza bir örnek alacağız. Son zamanlarda bir kurs başlattık, WordPress’in gelişiminde konuları iyice öğretmenin yeni bir yolu. Kurs şimdilik sadece sıradan bir eski gönderi, ancak bunu kendi özel bir şekilde gönderiyoruz. Bir “özel kurs” arşiv sayfasına sahip olmayı kolaylaştırmak gibi bir takım avantajları vardır. Bununla birlikte, kendi özel yazı tipi olmalarına rağmen, üç WordPress taksonomimizi kullanmasını istiyoruz:
Kategori, Taksonomi Varsayılan Kategori WordPress,
Post_tags, taksonomi etiketi varsayılan WordPress ve
Difulty, kendimizi kaydettirdiğimiz özel zorlukların taksonomisi.
Ayrıca, Arşiv sayfasındaki diğer yayın türlerimizle karıştırılmış bir kurs istiyoruz. Örneğin, orta seviye olan tüm içeriğimizi bulmak için “Orta” ı tıklarsanız, orta düzey kursumuzun normal makalemizin hemen yanında görünmesini istiyoruz. Bunun için birkaç adım olduğu ortaya çıktı. Bu hafta, özel bir sevkiyat türüne mevcut taksonominin nasıl ekleneceğini ve Taksonomi Arşivi sayfasında özel bir gönderi türünün nasıl yapılacağını tartışacağız.
Başlamadan önce bir şey daha. WordPress’in gelişimini öğrenmek istiyorsanız, bunun için en iyi yönergeleri yazdık:
WordPress’in gelişimini öğrenmenin en iyi yolu uyan ve bugün koş!
“Denediğim diğer kursların neredeyse her zaman WordPress’in neden belirli bir şekilde bir şey yaptığını veya her şeyin birlikte nasıl çalıştığını açık bir şekilde açıklamamış. Tüm bunları çalıştırıyor ve her şey net ve anlaşılması kolay bir dilde açıklanıyor. ” -Caroline, WordPress Özgür İşçi
Uyan ve şimdi koş
Şimdi, mevcut taksonomiyi WordPress özel posta türüne eklemek için koda girelim. Aşağıdaki kod, bugün göreceğimiz tam koddur. Bu, Mandiri eklentisindeki tek dosya olarak en iyisi olacak. Eklentileri kaydetme hakkında daha fazla bilgi için konuyla ilgili makalemize bakın.
// 1. Gönderi türünü kaydedin add_action (‘init’, ‘wpshout_register_cpts’); İşlev wspout_register_cpts () {$ args = array (‘public’ => true, ‘label’ => ‘kurslar’, ‘has_archive’ => true, ‘yeniden yazma’ => dizi (‘slug’ => ‘kurslar’),, ‘Destekler’ => Array (‘başlık’, ‘editör’, ‘yazar’, ‘küçük resim’, ‘alıntı’, ‘yorumlar’, ‘revizyonlar’),); Register_post_type (‘kurs’, $ args); } // 2. Add_ace (‘init’, ‘wspspout_add_taxonomies_to_coures’) türünü yayınlamak için mevcut taksonomileri ekleyin; İşlev wspout_add_taxonomies_to_coures () {register_taxonomy_for_object_type (‘kategori’, ‘kurs’); register_taxonomy_for_object_type (‘fark’, ‘kurs’); register_taxonomy_for_object_type (‘post_tag’, ‘kurs’); } // 3. Arşiv sayfalarında görüntülenen kurslar yazın add_filter (‘pre_get_posts’, ‘wspout_add_custom_post_types_to_query’); İşlev wspspout_add_custom_post_types_to_query ($ query) {if (is_archive () && $ query-> is_main_query () && boş ($ query-> query_vars ‘],’ ders ‘)); }} Sonuç, özel posta türüne taksonomi eklemenin üç farklı adım gerektirmesidir. Yukarıdaki kod, sırayla üç şey gerçekleştirir:
Gerekli özelliklerle özel tip “kurs” kaydedin.
Mevcut üç taksonomi – kategori, Post_TAG ve özel taksonomi zorluğumuz – ekleyin çünkü ders yazısı.
Kursların arşiv sayfasında görünmesine neden olmak, bu nedenle kategorilere, zorluklara vb. Dayalı arayın. Kursun sonuçlarını içerecektir. Bu üç bölümden biri bile büyük bir paket olan üçünü yapmanız gereken çok zordur. Benim için ve umarım senin için. Her bölüme daha ayrıntılı olarak bakalım.
1. Kursu register_post_type () ile kaydettirme Bu bölüm, $ args dizisi tarafından verilen bir dizi bağımsız değişkenle register_post_type () çağrılarını çalıştırmak için init kancası wordPress kullanır. Daha önce hiç özel bir gönderi türü kaydetmediyseniz, register_post_type () ‘nin kodeks açıklamasına bakın. Ayarlar $ args-and-a-function-a-wordpress-hook gerçekten WordPress için çekirdek ve register_post_type () bu desene alışkın olup olmadığınızı anlamak çok zor değil. Bahsetmek istediğim bir şey, bizim için $ args’teki ‘Destekler’ parametrelerini manuel olarak içermesidir. Tamamen $ args dışında bırakırsanız, özel posta tipinizde varsayılan olarak birkaç özellik vardır, ancak istediğimiz bazı (alıntılar gibi) yoktur. Ve yalnızca ‘Destekler’ => ‘alıntıları’ eklerseniz, diğerleri de devre dışı bırakılır – yazı, yazar veya içerik başlığı gibi. Bu nedenle, kursumuza sahip olmak istediğimiz her standart özelliğin bir listesini oluşturma gereğini hissediyoruz:
‘Destekler’ => Array (‘Başlık’, ‘Editör’, ‘Yazar’, ‘Küçük Resim’, ‘Alıntı’, ‘Yorumlar’, ‘Revizyonlar’) 2. Mevcut taksonomiyi bu basit kısmı gönderen özel olarak ekleyin Kategoriler, Post_TAG ve dersler için taksonomi taksonulty kaydetmek için kayıt_taxonomy_for_object_type () için üç çağrı kullanan özel kurslardan. Bu üç küçük harf, taksonomi kategorileri, etiketler ve zorluklar için “salyangozlar” dır. Onları kategori ve etiketler için aramalıyız (çünkü bu varsayılan WordPress’in taksonomisidir) ve kaydolduğumuzda zorluklar verdiğimizi biliyoruz. Sonuçlar şu şekilde görünüyor:
Büyütmek için tıklayın
Bu bölümün temel kodu için Pippin Williamson ödülü. Kayıt için Pippin, bunu bir eklentide yaparsanız, Init kancası yerine Plugins_Loaded Hooks kullanmanızı tavsiye etti; Ancak, bunu denedik ve sadece init bizim için çalıştı. 3. Arşiv sayfasının son kısmına kurs eklemek için pre_get_posts () kullanma, kullanıcıların gerçekten “orta” ni tıklamasını ve tüm yayınların ve orta kursların bir listesini görünmesini istiyorsanız önemlidir. Bu, yayınların ve kursların dahil edilmesi için her arşiv sayfasındaki sorguları değiştirmek için önemli Pre_get_Posts kancalarına (hemen ayrıntılı olarak açıklayacağız!) Bağlı bir işlev kullanır.
Bu, bir yorum olarak daha ayrıntılı olarak yazılmış mantık ile işlevin işlevidir: WSPSPOUT_ADD_CUSTOM_POST_TYPES_TO_QUERY ($ query) {if (// Bir arşiv sayfası oluşturmaya çalışıyorsak ve eğer is_archive () && // ise Geçerli sorgu sayfa ana sorgusudur ve $ query-> is_main_query () && // Sorgu, boş yazdığımız gibi ($ query-> query_vars [‘Eppress_filters ])))) // sonra sorguyu // hem “Post” hem de “ders” $ query-> set (‘post_type’, dizisi (‘post’, ‘kurs’)) türünün yayınlarını getirecek şekilde ayarlayın; }} Nihai sonuç (yerel olarak kaydettiğim evreleme sitesinde) şöyle görünüyor: Büyütmek için tıklayın
(CSS-Tricks’e bu temel kod modeli için kredi. IS_CATEGORY () || IS_TAG () Değiştirdiğimizi unutmayın, örneğin yazar sayfası dahil olmak üzere her türlü arşiv sayfasını içeren IS_ARCHIVE () olurlar.) Şimdi. Özel yazı türüne taksonominin nasıl ekleneceğini biliyorsunuz, okuduğunuz için teşekkür ederiz. Bir kez daha, bu süreçteki her adım oldukça basittir, ancak üçünü yapmanız gerektiğini bilmek benim gibi küçük bir an “aha”. Her zamanki gibi, aşağıdaki soruları veya yorumları okumak istiyoruz! Kredi görüntüsü: Evelynhere