แก้ไขลักษณะที่ปรากฏของอินพุตอนุกรมวิธานที่กำหนดเอง


14

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

ฉันจะไปในทางที่ผิด? ฉันควรเริ่มด้วย taxonomies ที่ไม่เป็นลำดับชั้นและปรับเปลี่ยนวิธีการป้อนข้อมูลสำหรับสิ่งเหล่านั้นแทนหรือไม่? ฉันเปิดกว้างสำหรับการป้อนข้อมูลและยินดีที่จะตอบคำถามใด ๆ หรือให้ข้อมูลเพิ่มเติมถ้าฉันสามารถ


+1 คำถามที่ดี นี่จะเป็นสิ่งที่ดีสำหรับโครงการที่ฉันกำลังทำอยู่ด้วย นอกจากนี้ยังมี taxonomy ที่กำหนดเองเป็นเมนูแบบเลื่อนลงแทนรายการ "หมวดหมู่"
Zack

ใช่แบบเลื่อนลงจะดีเช่นกัน
Travis Northcutt


แทนที่จะพยายามแก้ไข metabox ที่มีอยู่สิ่งที่คุณอาจมองหาคือการลบ metabox เริ่มต้นสำหรับอนุกรมวิธานที่กำหนดจากนั้นลงทะเบียนของคุณเองเพื่อเรียกใช้ฟังก์ชันที่กำหนดเองที่แสดงคำศัพท์ในกลุ่มวิทยุและสิ่งนี้จะเชื่อมโยงกับ สองลิงก์ที่ให้ไว้ข้างต้นโดย maugly
t31os

คำตอบ:


13

แน่นอนว่าใช้ CSS และ'admin_head'เบ็ดเพื่อทำให้มันหายไป ฉันเชื่อว่านี่คือสิ่งที่คุณกำลังมองหา?

รายการ taxonomy ตามลำดับชั้นบนหน้าโพสต์ WordPress โดยไม่มีพาเรนต์
(ที่มา: mikeschinkel.com )

เพียงเพิ่มสิ่งต่อไปนี้ในfunctions.phpไฟล์ธีมของคุณหรือไปยัง.phpไฟล์ปลั๊กอินที่คุณอาจกำลังเขียน โปรดทราบว่าฉันได้รวม'init'เบ็ดเพื่อกำหนดประเภทโพสต์"บ้าน"และอนุกรมวิธาน"บา ธ "เพื่อให้ผู้อื่นสามารถทำตามตัวอย่างได้ง่ายขึ้น นอกจากนี้ยังทราบว่าถ้าอนุกรมวิธานของคุณเป็นชื่อBaths"คุณจะต้องเปลี่ยนการเลือก CSS ที่จะ#newbaths_parentแทน#newbath_parent:

add_action('admin_head','remove_bath_parents');
function remove_bath_parents() {
  global $pagenow;
  if (in_array($pagenow,array('post-new.php','post.php'))) { // Only for the post add & edit pages
    $css=<<<STYLE
<style>
<!--
#newbath_parent {
  display:none;
}
-->
</style>
STYLE;
    echo $css;
  }
}
add_action('init','add_homes_and_baths');
function add_homes_and_baths() {
  register_post_type('home',
    array(
      'label'           => 'Homes',
      'public'          => true,
      'rewrite'         => array('slug' => 'homes'),
      'hierarchical'    => false,
    )
  );
  register_taxonomy('bath', 'home', array(
    'hierarchical'    => true,
    'label'           => 'Baths',
    'rewrite'         => array('slug' => 'baths' ),
    )
  );
}

UPDATE

ดังนั้นดูเหมือนว่าฉันพลาดปุ่มตัวเลือกไปเป็นส่วนหนึ่งของคำถาม น่าเสียดายที่ WordPress ไม่ได้ทำให้ง่าย แต่คุณสามารถทำให้มันเกิดขึ้นได้โดยใช้PHP output buffering (ผ่านทางob_start()และob_get_clean()ฟังก์ชั่น)เพียงแค่หา hook ก่อนที่ metabox จะถูกเอาท์พุท ( 'add_meta_boxes') และ hook หลังจากที่มันถูก output ( 'dbx_post_sidebar') HTML สำหรับ'checkbox'และแทนที่ด้วย'radio'echo ไปที่หน้าจอและคุณทำได้! รหัสดังต่อไปนี้:

add_action('add_meta_boxes','mysite_add_meta_boxes',10,2);
function mysite_add_meta_boxes($post_type, $post) {
  ob_start();
}
add_action('dbx_post_sidebar','mysite_dbx_post_sidebar');
function mysite_dbx_post_sidebar() {
  $html = ob_get_clean();
  $html = str_replace('"checkbox"','"radio"',$html);
  echo $html;
}

และหลักฐาน:

สกรีนช็อตแสดง taxonomies โดยใช้ปุ่มตัวเลือก
(ที่มา: mikeschinkel.com )


1
"ดูมาไม่มีฟิลด์แม่!" ไมค์คุณทำให้ฉันหัวเราะ! : D
มิคาลเมา

@ maugly - นั่นเป็นค่าเริ่มต้นของฉัน : D
MikeSchinkel

@haha - ดีใจที่คุณชอบ :)
MikeSchinkel

ยอดเยี่ยมเช่นเคย
Travis Northcutt

1
@tnorthcutt - ตรงไปตรงมาฉันขอแนะนำให้เขียนโค้ด metabox ของคุณเอง นั่นคือสิ่งที่ฉันทำและมันก็ไม่ยากสำหรับเรื่องนี้ เพียงแค่ทำมุมมองแหล่งที่มาและการจับคู่<input>และ<select>ชื่อและคุณไม่ต้องทำอะไรเพื่อจับ taxonomy WordPress จะทำเพื่อคุณ หรือใช้ฟิลด์ที่กำหนดเองและบายพาสอนุกรมวิธานซึ่งอาจเกินค่านี้
MikeSchinkel

2

หรือถ้าคุณขี้เกียจสามารถใช้ปลั๊กอินนี้: Single Taxonomy UI

(ฉันอยากจะเพิ่มสิ่งนี้เป็นความคิดเห็นในคำตอบของ Mike เพราะส่วนใหญ่ทำสิ่งเดียวกัน - แต่ฉันยังไม่สามารถเพิ่มความคิดเห็นได้)


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