Özel gönderi türü - sipariş alanı


14

Özel bir yazı türünde, sayfalar için kullanılabilen "sipariş" alanını eklemenin bir yolu var mı?

"Sipariş" alanında yinelenen değerleri önleyen yerleşik bir mantık var mı?

Buradaki fikir, özel bir yazı türünü kullanıcı tarafından belirtilen bir sıraya göre, ardından dize tabanlı özel bir alana göre alfabetik olarak sıralayabilmektir.


Yanıtlar:


25

Register_post_type işlevini kullanarak özel yazı türünüzü bildirirken, aşağıdaki örnekte olduğu gibi destek alanına 'page-attributes' eklemeniz gerekir:

register_post_type('myposttype', array(
    'supports' => array('title', 'editor', 'page-attributes'),
    'hierarchical' => false
));

'Destekler' alanına desteklenen başka meta kutuları da eklemeniz gerekir , register_post_type alanları hakkında daha fazla bilgi için http://codex.wordpress.org/Function_Reference/register_post_type adresine bakın .

Ayrıca bildiğim kadarıyla aynı siparişten ikisini önlemek için herhangi bir yerleşik bir şey yok, bunun nedeni heirarchy'ye dayalı bir alt sipariş oluşturabilmenizdir (böylece bir grup çocuk sayfası diğerinden farklı bir sıralamaya sahip olabilir)


kullanımı page-attributeshem orderalanı hem de alanı sunar parent. Tarladan nasıl kurtulurum parent?
Kuvvet Akışı

Boşver. hierarchicalYanlış olarak ayarlamak bundan kurtulur.
Kuvvet Akışı

Kötülerim, sayfa ebeveynlerini de istemediğini fark etmedim. Cevabımı hariç tutmak için güncelleyeceğim.
Dave Hunt

Selam. Bu kod var ama hiçbir şey görmüyorum: `` // Service Custom Post Type add_action ('init', 'create_post_type'); işlev create_post_type () {$ supports_args = dizi ('başlık', 'düzenleyici', 'sayfa özellikleri'); register_post_type ('hizmet', dizi ('etiketler' => dizi ('ad' => __ ('Hizmetler'), 'tekil_ad' '=> __ (' Hizmet '),' destekler '=> $ supports_args,' hiyerarşik ' => yanlış), 'genel' => doğru, 'has_archive' => doğru, // 'menu_position' => 2)); } ``
Sylar

@Sylar Bunun çok geç olduğunu fark ettim, ama bana 'supports' => $ supports_args, 'hierarchical' => false dizinin yanlış kısmında görünüyor. Örneğinizdeki etiketler dizisinin altına yerleştirilmişseniz, temel dizide, 'public' => true ile aynı düzeyde olmalıdır
Dave Hunt

4

@ Dave-Hunt'ın yanıtına ek olarak, özel bir sipariş tanımlamak için aşağıdaki gibi bir filtre de ekleyebilirsiniz - bu durumda, başlığa göre alfabetik. ( Mark Leong'un blog yazısı sayesinde kodlayın . ) is_admin()Ön uçta da özel order_by istiyorsanız onay işaretini kaldırın .

fonksiyon set_custom_post_types_admin_order ($ wp_query) {
  if (is_admin ()) {

    // Posta türünü sorgudan alın
    $ post_type = $ wp_query-> sorgu ['post_type'];

    if ($ post_type == 'POST_TYPE') {

      // 'orderby' değeri herhangi bir sütun adı olabilir
      $ wp_query-> set ('sipariş', 'başlık');

      // 'sipariş' değeri ASC veya DESC olabilir
      $ wp_query-> set ('sipariş', 'ASC');
    }
  }
}
add_action ('pre_get_posts', 'set_custom_post_types_admin_order');

Güncelleme

Ön kayıt doğrulaması için şu yanıta bakın: /wordpress//a/40095/4645 seçeneklerinizin tartışıldığı yer. Temel olarak, WordPress'in önceden kaydedilmiş kancaları olmadığından özel jQuery'ye gelir.

: Ayrıca (ileride başvurmak üzere burada önceki yorumunu çoğaltarak), işte burada sayfalar için olduğu gibi, 's kullanıcı düzenlenebilir, böylece admin 'menü düzeni' alanını açığa nasıl ekleme 'menü düzeni' sütununu özel yayın tipi yönetici ekranına

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.