ประเภทโพสต์ที่กำหนดเอง - ฟิลด์คำสั่งซื้อ


14

ในประเภทโพสต์ที่กำหนดเองจะมีวิธีรวมฟิลด์ "คำสั่งซื้อ" ที่ใช้ได้กับหน้าเว็บหรือไม่

มีตรรกะในตัวที่ป้องกันค่าที่ซ้ำกันในฟิลด์ "คำสั่งซื้อ" หรือไม่?

แนวคิดคือสามารถจัดเรียงประเภทโพสต์ที่กำหนดเองตามคำสั่งที่ผู้ใช้ระบุตามลำดับตัวอักษรตามฟิลด์ที่กำหนดเองตามสตริง


คำตอบ:


25

เมื่อประกาศประเภทโพสต์ที่กำหนดเองของคุณโดยใช้ฟังก์ชั่น register_post_type คุณต้องเพิ่ม 'page-attributes' ลงในช่องสนับสนุนเช่นในตัวอย่างต่อไปนี้:

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

คุณจะต้องเพิ่มเมตาบ็อกที่สนับสนุนอื่น ๆ รวมถึงฟิลด์ 'สนับสนุน' ดูhttp://codex.wordpress.org/Function_Reference/register_post_typeสำหรับข้อมูลเพิ่มเติมเกี่ยวกับฟิลด์ register_post_type

นอกจากนี้เท่าที่ฉันรู้ว่าไม่มีวิธีการใดที่สร้างขึ้นเพื่อป้องกันสองคำสั่งเดียวกันนี่เป็นเพราะคุณสามารถสร้างการสั่งซื้อย่อยตามลำดับความสำคัญ (ดังนั้นหน้าย่อยของเด็กกลุ่มหนึ่งสามารถมีลำดับที่แตกต่างกันได้อีก)


การใช้page-attributesนำเสนอทั้งorderสนามและparentสนาม ฉันจะกำจัดparentสนามได้อย่างไร
Force Flow

ไม่เป็นไร. การตั้งค่าhierarchicalเป็นเท็จกำจัดมัน
Force Flow

ฉันไม่ดีไม่ทราบว่าคุณไม่ต้องการหน้าผู้ปกครอง ฉันจะอัปเดตคำตอบของฉันเพื่อไม่รวม
Dave Hunt

สวัสดี ฉันมีรหัสนี้ แต่ฉันไม่เห็นอะไรเลย: `` `// ประเภทโพสต์ที่กำหนดเองบริการ add_action ('init', 'create_post_type'); ฟังก์ชั่น create_post_type () {$support_args = array ('ชื่อ', 'บรรณาธิการ', 'หน้าแอตทริบิวต์'); register_post_type ('service', array ('labels' => array ('name' => __ ('Services'), 'singular_name' => __ ('Service'), 'support' => $support_args, 'ลำดับชั้น' => false), 'public' => true, 'has_archive' => true, // 'menu_position' => 2)); } `` `
Sylar

@Sylar ฉันรู้ว่านี่มันช้ามาก แต่ดูเหมือนว่าฉันจะ 'สนับสนุน' => $support_args, 'ลำดับชั้น' => false อยู่ในส่วนที่ไม่ถูกต้องของอาร์เรย์ คุณมีมันซ้อนอยู่ใต้อาร์เรย์ป้ายกำกับในตัวอย่างของคุณควรอยู่ในอาร์เรย์ฐานในระดับเดียวกับ 'สาธารณะ' => จริง
เดฟฮันท์

4

นอกเหนือจากการตอบกลับของ @ Dave-Hunt คุณยังสามารถเพิ่มตัวกรองเช่นต่อไปนี้เพื่อกำหนดลำดับที่กำหนดเอง - ในกรณีนี้เรียงตามตัวอักษรตามชื่อเรื่อง (รหัสขอบคุณโพสต์บล็อกของ Mark Leong ) ลบเครื่องหมายออกis_admin()หากคุณต้องการให้คุณสั่ง order_by แบบฟรอนต์เอนด์เช่นกัน

ฟังก์ชัน set_custom_post_types_admin_order ($ wp_query) {
  ถ้า (is_admin ()) {

    // รับโพสต์ประเภทจากแบบสอบถาม
    $ post_type = $ wp_query-> query ['post_type'];

    ถ้า ($ post_type == 'POST_TYPE') {

      // ค่า 'orderby' สามารถเป็นชื่อคอลัมน์ใดก็ได้
      $ wp_query-> set ('orderby', 'title');

      // ค่า 'order' สามารถเป็น ASC หรือ DESC
      $ wp_query-> set ('order', 'ASC');
    }
  }
}
add_action ('pre_get_posts', 'set_custom_post_types_admin_order');

ปรับปรุง

สำหรับการตรวจสอบก่อนบันทึกให้ดูคำตอบนี้: /wordpress//a/40095/4645 ตัวเลือกของคุณถูกกล่าวถึง โดยพื้นฐานแล้วมันลงมาที่ jQuery ที่กำหนดเองเนื่องจาก WordPress ไม่มีตะขอบันทึกล่วงหน้า

นอกจากนี้ (ทำซ้ำความคิดเห็นก่อนหน้าของฉันที่นี่เพื่อการอ้างอิงในอนาคต) นี่คือวิธีการเปิดเผยฟิลด์ 'ลำดับเมนู' ในผู้ดูแลระบบดังนั้นจึงสามารถแก้ไขได้โดยผู้ใช้เนื่องจากเป็นหน้า: การเพิ่มคอลัมน์ 'ลำดับเมนู' ลงในหน้าจอผู้ดูแลระบบ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.