Jenis pesanan khusus - bidang pesanan

13

Dalam jenis pos kustom, apakah ada cara untuk memasukkan bidang "pesanan" yang tersedia untuk halaman?

Apakah ada logika bawaan yang mencegah nilai duplikat di bidang "pesanan"?

Idenya adalah untuk dapat mengurutkan jenis posting khusus berdasarkan pesanan yang ditentukan pengguna, kemudian menurut abjad berdasarkan bidang khusus berbasis string.

Aliran kekuatan
sumber

Jawaban:

24

Saat mendeklarasikan jenis posting khusus Anda menggunakan fungsi register_post_type, Anda harus menambahkan 'atribut halaman' ke bidang dukungan, seperti dalam contoh berikut:

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

Anda juga perlu menambahkan kotak meta lain yang didukung ke bidang 'dukungan', lihat http://codex.wordpress.org/Function_Reference/register_post_type untuk informasi lebih lanjut tentang bidang register_post_type.

Sejauh yang saya tahu tidak ada cara untuk mencegah dua dari urutan yang sama, ini karena Anda dapat membuat sub-pemesanan berdasarkan hirarki (sehingga satu grup anak-anak halaman dapat memiliki pemesanan yang berbeda dari yang lain)

Dave Hunt
sumber
menggunakan page-attributeshadiah orderbidang dan parentbidang. Bagaimana cara saya menyingkirkan parentlapangan?
Force Flow
Lupakan. Pengaturan hierarchicalke false akan menghilangkannya.
Force Flow
Sayang saya, tidak menyadari Anda tidak juga ingin halaman orang tua. Saya akan memperbarui jawaban saya untuk mengecualikannya.
Dave Hunt
Hai. Saya memiliki kode ini tetapi saya tidak melihat apa pun: `` `// Jenis Layanan Kiriman Kustom add_action ('init', 'create_post_type'); function create_post_type () {$ support_args = array ('title', 'editor', 'page-attributes'); register_post_type ('service', array ('label' => array ('name' => __ ('Services'), 'singular_name' => __ ('Layanan'), 'support' => $ support_args, 'hierarchical' => false), 'public' => true, 'has_archive' => true, // 'menu_position' => 2)); } `` `
Sylar
@Sylar Saya menyadari ini sangat terlambat, tetapi bagi saya sepertinya 'support' => $ support_args Anda, 'hierarchical' => false ada di bagian array yang salah. Anda memilikinya bersarang di bawah larik label pada contoh Anda, itu harus di larik dasar, pada tingkat yang sama dengan 'publik' => true
Dave Hunt
4

Selain respons @ Dave-Hunt, Anda juga dapat menambahkan filter, seperti yang berikut, untuk menentukan pesanan khusus - dalam hal ini, alfabet menurut judul. (Kode terima kasih untuk posting blog Mark Leong. ) Hapus is_admin()centang, jika Anda ingin Anda kustom order_by di front-end juga.

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

    // Dapatkan jenis posting dari kueri
    $ post_type = $ wp_query-> query ['post_type'];

    if ($ post_type == 'POST_TYPE') {

      // Nilai 'orderby' dapat berupa nama kolom apa saja
      $ wp_query-> set ('orderby', 'title');

      // nilai 'pesanan' bisa ASC atau DESC
      $ wp_query-> set ('order', 'ASC');
    }
  }
}
add_action ('pre_get_posts', 'set_custom_post_types_admin_order');

Memperbarui

Untuk validasi pra-simpan, lihat jawaban ini: /wordpress//a/40095/4645 di mana opsi Anda dibahas. Pada dasarnya, ini tergantung pada jQuery khusus, karena WordPress tidak memiliki kait pra-simpan.

Juga (menduplikasi komentar saya sebelumnya di sini untuk referensi di masa mendatang), inilah cara mengekspos bidang 'urutan menu' di admin, sehingga dapat diedit oleh pengguna, seperti halnya untuk halaman: Menambahkan kolom 'urutan menu' ke layar admin jenis pos kustom

marfarma
sumber