จะเปลี่ยนตำแหน่งเริ่มต้นของกล่องเมตา WP ได้อย่างไร?


17

ฉันสงสัยว่าถ้ามีวิธีเปลี่ยนตำแหน่งเริ่มต้นของกล่องเมตา Wordpresses เช่น "ภาพเด่น" สำหรับประเภทโพสต์ที่กำหนดเองโดยไม่ต้องลากด้วยตนเอง?

ตัวอย่าง: ตัวอย่างการวางตำแหน่งกล่อง Meta


คุณสามารถเปลี่ยนคำสั่งเริ่มต้น: wordpress.stackexchange.com/questions/41501/…

คำตอบ:


22

คุณสามารถลบเมตาบ็อกซ์เริ่มต้นด้วย remove_meta_box และเพิ่มเข้าไปในตำแหน่งอื่นด้วย add_meta_box:

add_action('do_meta_boxes', 'wpse33063_move_meta_box');

function wpse33063_move_meta_box(){
    remove_meta_box( 'postimagediv', 'post', 'side' );
    add_meta_box('postimagediv', __('Featured Image'), 'post_thumbnail_meta_box', 'post', 'normal', 'high');
}

สิ่งนี้จะลบออกจากคอลัมน์ด้านข้างและเพิ่มลงในคอลัมน์หลัก เปลี่ยนpostในตัวอย่างนี้เป็นประเภทโพสต์ที่กำหนดเองของคุณ


ดูเหมือนจะเป็นสิ่งที่ดีขอบคุณอีกครั้งไมโลฉันจะลองดู
Mr.Brown

@Milo: ถ้าadd_meta_box()ต้องการ$callbackฟังก์ชั่นชื่อฉันจะรู้ชื่อของฟังก์ชั่นที่ใช้โดย WordPress ได้อย่างไร? สมมติว่าฉันต้องการทำสิ่งเดียวกันกับแถบด้านข้าง meta_box 'หมวดหมู่' (#categorydiv) หรือไม่
Mayeenul Islam

5
@MayeenulIslam ดูในไฟล์/wp-admin/edit-form-advanced.phpและคุณจะเห็นว่า WordPress เพิ่มกล่องเมตาหลักทั้งหมดและการเรียกกลับและอาร์กิวเมนต์ที่ใช้ post_categories_meta_boxสำหรับประเภทที่มันเป็น
Milo

5

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

ฉันชอบที่จะทำสิ่งต่าง ๆ ด้วย 'wordpress' (โดยปกติแล้วจะจ่ายออก), ปกครองมากกว่าปะทะกับมันและวิธีที่ wordpress ทำมันเป็นดังนี้:

wordpress จัดเก็บตำแหน่งลากต่อผู้ใช้ต่อหน้าจอและมีพวงของคีย์ผู้ใช้เมตาทั้งหมดที่ใช้ขึ้นอยู่กับหน้า / หน้าจอที่มันอยู่

ดังนั้นคุณสามารถเพิ่มการดำเนินการหรือตัวกรองสำหรับผู้ใช้ใหม่แต่ละรายเพื่อตั้งค่าผู้ใช้ในแบบที่คุณต้องการให้เป็นค่าเริ่มต้น
1) ลากและจัดเรียงหน้าที่คุณต้องการให้มีผลต่อจากนั้น 2) ดู phpmyadmin ที่ user-meta สำหรับ id ของคุณและดูว่า wp เก็บไว้ที่ใด 3) จากนั้นโค้ดการกระทำของผู้ใช้ใหม่ดังต่อไปนี้หากผู้ใช้ไม่ได้ตั้งค่าไว้แล้ว (เพื่อหลีกเลี่ยงการเขียนทับตัวเลือกส่วนบุคคล) คุณสามารถตั้งค่าตามที่คุณต้องการ - ด้วยค่าที่คุณพบจากการตั้งค่าด้วยตนเอง

ในการรับแนวคิดของผู้ใช้เมตาดาต้าที่คุณกำลังมองหาดูภาพหน้าจอเหล่านี้: http://wpusersplugin.com/related-plugins/amr-user-templates/sc Screenshots-for-user-templates/

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


1
แม้ว่าฉันจะชอบไอเดียที่อยู่เบื้องหลังแนวทางนี้ แต่วิธีแก้ปัญหาของ Milo นั้นเร็วกว่ามากดังนั้นฉันจะให้การยิงแทน แต่ขอบคุณที่สละเวลาเพื่อแจ้งให้ฉันทราบเกี่ยวกับวิธีการนี้เช่นกัน ฉันจะพิจารณาใช้วิธีนี้ในภายหลัง ฉัน 1up'd ความคิดเห็นของคุณ
Mr.Brown

3
ปลั๊กอินที่เสนอโดย Anmari เป็นปลั๊กอินเชิงพาณิชย์ที่ต้องชำระเงิน ... และดูเหมือนจะไม่อัปเดตตั้งแต่เดือนสิงหาคมปีที่แล้ว คุณยังคงดูแลปลั๊กอินนั้นอยู่หรือไม่? ถ้าไม่คุณได้พิจารณาแบ่งปันบน Github หรือไม่?
unfulvio

ขอบคุณ @anmari สำหรับการแบ่งปันวิธีการนี้มีประโยชน์จริงๆ
Maor Barazany

0

หากคุณต้องการสั่งซื้อกล่องเมตาของคุณอย่างแม่นยำคุณสามารถใช้ปลั๊กอินนี้: https://wordpress.org/plugins/post-meta-box-order/

มันเล่นบน meta-box-order_post ของตัวเลือกผู้ใช้ (ตาราง wp_usermeta)

หมายเหตุ 1: เทคนิคนี้สามารถนำไปใช้กับ CPT ที่กำหนดเองใด ๆ โดยเปลี่ยนจุดสิ้นสุดของการตั้งค่าสถานะ: meta-box-order_ [YOUR_CPT]

หมายเหตุ 2: อย่าลืมเปลี่ยนแฮชในรหัสของปลั๊กอินเพื่อใช้คำสั่งซื้อใหม่กับผู้ใช้ที่มีอยู่ทั้งหมด

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