โฮมเพจ » WordPress » ทำความเข้าใจกับ WordPress Custom Meta Box

    ทำความเข้าใจกับ WordPress Custom Meta Box

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

    กล่องเมตาคือ กล่องที่กำหนดเอง ที่เราสร้างขึ้นด้วยตัวเองซึ่งอาจ มีอินพุตหรือ UI แบบโต้ตอบอื่น ๆ เพื่อเพิ่มรายการใหม่ จากโพสต์หรือหน้า คุณสามารถใช้กล่องเมตาแทนกล่องฟิลด์ที่กำหนดเองเพื่อทำสิ่งเดียวกัน เรามาดูวิธีการสร้าง.

    เพิ่มเติมเกี่ยวกับ Hongkiat.com:

    • ปรับแต่งไดเรกทอรีอัปโหลดสื่อใน WordPress
    • ปรับแต่งสไตล์บรรณาธิการ WordPress
    • ปรับแต่ง “หมอตำแย” ในแถบผู้ดูแลระบบของ WordPress
    • ลงทะเบียน taxonomy แบบกำหนดเองสำหรับผู้ใช้ WordPress
    • แสดงไอคอนในเมนู WordPress

    สร้างกล่อง Meta

    WordPress ให้ฟังก์ชัน API ที่เรียกว่า add_meta_box, ซึ่งให้เราสร้างเมตาบ็อกซ์ทันที นี่คือในรูปแบบพื้นฐานสูงสุด.

     ฟังก์ชั่น add_post_reference () add_meta_box ('โพสต์อ้างอิง', 'อ้างอิง', 'referenceCallBack', 'โพสต์');  add_action ('add_meta_boxes', 'add_post_reference'); ฟังก์ชั่น referenceCallBack () echo 'Hello World' 

    add_meta_box ใช้พารามิเตอร์สี่ตัว: ID, ชื่อกล่องเมตา, ฟังก์ชันการเรียกกลับที่จะเรียกว่า 'Hello World' และประเภทโพสต์ที่เราต้องการแสดง ในกรณีนี้เราได้กำหนดกล่องเมตาใหม่ในหน้าแก้ไขการโพสต์ (วิธีนี้ใช้ได้กับหน้าเว็บด้วย).

    ในส่วนการแก้ไขโพสต์คุณจะพบกล่องใหม่ดังต่อไปนี้.

    กล่องเมตาใหม่ดังที่คุณเห็นด้านบนจะปรากฏใต้ตัวแก้ไข WYSIWYG หากคุณต้องการเพิ่มลงในแถบด้านข้างคุณสามารถเพิ่ม 'ด้าน' หลังพารามิเตอร์โพสต์และพร้อมกับ 'สูง' ถ้าคุณต้องการวางไว้ที่ด้านบนสุดของแถบด้านข้าง.

     ฟังก์ชั่น add_post_reference () add_meta_box ('โพสต์อ้างอิง', 'อ้างอิง', 'referenceCallBack', 'โพสต์', 'ด้าน', 'สูง');  add_action ('add_meta_boxes', 'add_post_reference'); 

    ตอนนี้คุณจะพบมันเหนือ ประกาศ กล่อง…

    ตอนนี้เพื่อแทนที่ข้อความ 'Hello World' ในนั้น ลองเพิ่มองค์ประกอบเช่นฟิลด์อินพุตสำหรับรายการใหม่.

    ในตัวอย่างนี้เราจะเพิ่มสองช่องป้อนข้อมูลที่ประกอบด้วยหนึ่งสำหรับการเพิ่มชื่ออ้างอิงและอีกหนึ่งสำหรับลิงค์อ้างอิง:

     function referenceCallBack ($ โพสต์) wp_nonce_field ('reference_meta_box', 'reference_nonce'); $ name_value = get_post_meta ($ post-> ID, '_post_reference_name', จริง); $ link_value = get_post_meta ($ post-> ID, '_post_reference_link', จริง) echo ''; echo ''; echo '

    ' 'เพิ่มชื่อของการอ้างอิง'. '

    '; echo ''; echo ''; echo '

    ' 'เพิ่มลิงก์ของข้อมูลอ้างอิง'. '

    ';

    รีเฟรชหน้าแก้ไขการโพสต์และคุณควรเห็นอินพุตทั้งสองนี้เพิ่ม.

    $ NAME_VALUE และ $ link_value ตัวแปรจะดึงรายการจากฐานข้อมูลและเติมลงในช่องใส่ ในการรับข้อมูลเข้าสู่ฐานข้อมูลเราจะต้องสร้างฟังก์ชันสำหรับสิ่งนั้น.

    เราจำเป็นต้องเพิ่มโค้ดสองสามบรรทัดที่จะเติมรายการที่ป้อนผ่านอินพุตเหล่านี้ลงในฐานข้อมูลอย่างปลอดภัย. “อย่างปลอดภัย” ที่นี่หมายถึงรายการที่ถูกต้องตามกฎหมายและได้รับอนุญาต (ไม่ใช่รายการที่มาจากแฮกเกอร์หรือบุคลากรที่ไม่ได้รับอนุญาตอื่น ๆ ) เพื่อบันทึกรายการเราจะต้องสร้างฟังก์ชั่นใหม่ ลองตั้งชื่อฟังก์ชั่น: save_post_reference, ชอบมาก.

     ฟังก์ชั่น save_post_reference ($ post_id)  ​​add_action ('save_post', 'save_post_reference'); 

    ดังที่เราได้กล่าวไปแล้วเราจำเป็นต้องตรวจสอบบางสิ่งเพื่อความปลอดภัย:

    (1) เราจะต้องตรวจสอบว่าผู้ใช้ มีความสามารถในการแก้ไขโพสต์.

     if (! current_user_can ('edit_post', $ post_id)) return;  

    (2) เรายังต้อง ตรวจสอบว่าตั้งค่า Nonce.

     if (! isset ($ _POST ['reference_nonce'])) return;  if (! wp_verify_nonce ($ _POST ['reference_nonce'], 'reference_meta_box')) return;  

    (3) จากนั้นเราต้องป้องกันไม่ให้ข้อมูลถูกบันทึกโดยอัตโนมัติ การออมสามารถทำได้เพียงครั้งเดียว “บันทึก” หรือ “ปรับปรุง” คลิกปุ่มแล้ว.

     if (define ('DOING_AUTOSAVE') && DOING_AUTOSAVE) return;  

    (4) เราจะต้องให้แน่ใจว่าทั้งสองอินพุตของเรา, post_reference_name และ post_reference_link, มีการตั้งค่าและพร้อมก่อนที่เราจะส่งรายการ.

     if (! isset ($ _POST ['post_reference_name']) ||! isset ($ _POST ['post_reference_link'])) return;  

    (5) และรายการควรเป็นอิสระจากตัวละครที่คาดไม่ถึงซึ่งอาจส่งผลต่อความปลอดภัยของเว็บไซต์ เพื่อตรวจสอบสิ่งนี้คุณสามารถใช้ฟังก์ชั่น WordPress ในตัว sanitize_text_field.

     $ reference_name = sanitize_text_field ($ _POST ['post_reference_name']); $ reference_link = sanitize_text_field ($ _POST ['post_reference_link']); 

    เอาล่ะตอนนี้เราพร้อมที่จะบันทึกรายการลงในฐานข้อมูล:

     update_post_meta ($ post_id, '_post_reference_name', $ reference_name); update_post_meta ($ post_id, '_post_reference_link', $ reference_link); 

    ตอนนี้คุณสามารถลองได้แล้ว: ป้อนเนื้อหาบางส่วนลงในช่องป้อนข้อมูลและคลิก “ปรับปรุง” ปุ่มเพื่อบันทึก.

    ข้อสรุป

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