การเพิ่ม Meta Boxes ให้กับประเภทการโพสต์ใน WordPress — SitePoint (2024)

เวิร์ดเพรส

    คอลลินส์ อกบองกามา

    แบ่งปัน

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

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

    การเพิ่ม Meta Boxes ให้กับหน้าจอประเภทการโพสต์

    ฟังก์ชัน PHP ส่วนใหญ่ (ถ้าไม่ใช่ทั้งหมด) พารามิเตอร์ และการกระทำตะขอที่มีประโยชน์การสร้างกล่องเมตาได้รับการคุ้มครองโดย Narayan Prusty.

    หากต้องการเพิ่มเมตาบ็อกซ์ลงในหน้าจอแก้ไขประเภทโพสต์ ให้ทำดังนี้add_meta_box()ถูกใช้แล้วจึงติดเข้ากับadd_meta_boxesการกระทำ.

    รหัสด้านล่างจะเพิ่ม metabox ให้กับโพสต์หน้าจอแก้ไข รับทราบglobal_notice_meta_box_callbackฟังก์ชันที่ถูกเรียกเพื่อแสดงฟิลด์แบบฟอร์มในกล่องเมตา เราจะมาพูดถึงเรื่องนี้ในภายหลัง

    ฟังก์ชัน global_notice_meta_box() { add_meta_box( 'ประกาศทั่วโลก', __( 'ประกาศทั่วโลก', 'sitepoint' ), 'global_notice_meta_box_callback', 'โพสต์' );} add_action( 'add_meta_boxes', 'global_notice_meta_box' );

    หากต้องการเพิ่มเมตาบ็อกซ์ลงในหน้าจอประเภทโพสต์จำนวนหนึ่ง –โพสต์,หน้าหนังสือและกหนังสือประเภทโพสต์ที่กำหนดเอง สร้างอาร์เรย์ของประเภทโพสต์ วนซ้ำอาร์เรย์และใช้งานadd_meta_box()เพื่อเพิ่มเมตาบ็อกซ์เข้าไป

    function global_notice_meta_box() { $screens = array( 'โพสต์', 'หน้า', 'หนังสือ' ); foreach ( $screens เป็น $screen ) { add_meta_box( 'ประกาศทั่วโลก', __( 'ประกาศทั่วโลก', 'sitepoint' ), 'global_notice_meta_box_callback', $screen ); }}add_action( 'add_meta_boxes', 'global_notice_meta_box' );

    หากต้องการเพิ่มเมตาบ็อกซ์ให้กับประเภทโพสต์ที่มีอยู่ทั้งหมดและประเภทที่จะสร้างในอนาคต ให้ใช้get_post_types()เพื่อรับอาร์เรย์ของประเภทโพสต์แล้วแทนที่ค่าของ$หน้าจอข้างบนนั้นด้วย

    ฟังก์ชั่น global_notice_meta_box() { $screens = get_post_types(); foreach ( $screens เป็น $screen ) { add_meta_box( 'ประกาศทั่วโลก', __( 'ประกาศทั่วโลก', 'sitepoint' ), 'global_notice_meta_box_callback', $screen ); }}add_action( 'add_meta_boxes', 'global_notice_meta_box' );

    การเพิ่มเมตาบ็อกซ์ให้กับประเภทโพสต์ที่มีอยู่และประเภทใหม่ทั้งหมดสามารถทำได้โดยละประเภทที่สาม ($หน้าจอ) อาร์กิวเมนต์เช่นนั้น:

    ฟังก์ชัน global_notice_meta_box() { add_meta_box( 'ประกาศทั่วโลก', __( 'ประกาศทั่วโลก', 'sitepoint' ), 'global_notice_meta_box_callback' );}add_action( 'add_meta_boxes', 'global_notice_meta_box' );

    เมตาบ็อกซ์สามารถจำกัดเฉพาะประเภทโพสต์ได้ (หนังสือในตัวอย่างนี้) โดยต่อท้ายชื่อประเภทโพสต์add_meta_boxesเบ็ดการกระทำดังต่อไปนี้:

    ฟังก์ชัน global_notice_meta_box() { add_meta_box( 'ประกาศทั่วโลก', __( 'ประกาศทั่วโลก', 'sitepoint' ), 'global_notice_meta_box_callback' );}add_action( 'add_meta_boxes_book', 'global_notice_meta_box' );

    ท่ามกลางอาร์กิวเมนต์อาร์เรย์ที่ใช้โดยregister_post_type()สำหรับการปรับแต่งประเภทโพสต์เองนั้นคือregister_meta_box_cbโดยค่าของมันคือฟังก์ชันโทรกลับที่ถูกเรียกเมื่อตั้งค่าเมตาบ็อกซ์

    สมมติว่าเราสร้างหนังสือประเภทโพสต์ที่กำหนดเองด้วยรหัสต่อไปนี้:

    ฟังก์ชั่น book_cpt() { $args = array( 'label' => 'Books', 'public' => true, 'register_meta_box_cb' => 'global_notice_meta_box' ); register_post_type( 'หนังสือ', $args );}add_action( 'init', 'book_cpt' );

    การเพิ่มadd_meta_box()นิยามฟังก์ชันสำหรับการสร้างเมตาบ็อกซ์ภายในglobal_notice_meta_boxฟังก์ชั่น PHP (ค่าของregister_meta_box_cbด้านบน) จะเพิ่มเมตาบ็อกซ์ให้กับหนังสือหน้าจอแก้ไขประเภทโพสต์แบบกำหนดเอง

    และอีกครั้ง นี่คือตัวอย่างของเราglobal_notice_meta_boxการทำงาน.

    ฟังก์ชั่น global_notice_meta_box () { add_meta_box ( 'ประกาศทั่วโลก', __ ( 'ประกาศทั่วโลก', 'จุดไซต์' ), 'global_notice_meta_box_callback' );}

    จนถึงตอนนี้ เราได้เรียนรู้วิธีต่างๆ ในการลงทะเบียนหรือเพิ่มกล่องเมตาลงใน WordPress แล้ว เรายังไม่ได้สร้างglobal_notice_meta_box_callbackฟังก์ชั่นที่จะมีฟิลด์แบบฟอร์มของเมตาบ็อกซ์ของเรา

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

    function global_notice_meta_box_callback( $post ) { // เพิ่มฟิลด์ nonce เพื่อให้เราตรวจสอบได้ในภายหลัง wp_nonce_field( 'global_notice_nonce', 'global_notice_nonce' ); $value = get_post_meta( $post->ID, '_global_notice', true ); echo '';}

    การเพิ่ม Meta Boxes ให้กับประเภทการโพสต์ใน WordPress — SitePoint (2)

    ที่บันทึก_โพสต์Action hook จัดการการบันทึกข้อมูลที่ป้อนลงในพื้นที่ข้อความเมื่อโพสต์ถูกบันทึกเป็นแบบร่างหรือเผยแพร่

    /** * เมื่อบันทึกโพสต์แล้ว ให้บันทึกข้อมูลที่เรากำหนดเอง * * @param int $post_id */function save_global_notice_meta_box_data( $post_id ) { // ตรวจสอบว่า nonce ของเราถูกตั้งค่าไว้หรือไม่ ถ้า ( ! isset( $_POST['global_notice_nonce'] ) ) { กลับ; } // ตรวจสอบว่า nonce นั้นถูกต้อง ถ้า ( ! wp_verify_nonce( $_POST['global_notice_nonce'], 'global_notice_nonce' ) ) { กลับ; } // หากเป็นการบันทึกอัตโนมัติ แสดงว่าแบบฟอร์มของเรายังไม่ได้ส่ง ดังนั้นเราจึงไม่ต้องการดำเนินการใดๆ ถ้า ( กำหนด ( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) { กลับ; } // ตรวจสอบสิทธิ์ของผู้ใช้ ถ้า ( isset( $_POST['post_type'] ) && 'หน้า' == $_POST['post_type'] ) { ถ้า ( ! current_user_can( 'edit_page', $post_id ) ) { กลับ; } } else { ถ้า ( ! current_user_can( 'edit_post', $post_id ) ) { กลับ; } } /* ตกลง เราสามารถบันทึกข้อมูลได้อย่างปลอดภัยแล้ว */ // ตรวจสอบให้แน่ใจว่าได้ตั้งค่าไว้แล้ว ถ้า ( ! isset( $_POST['global_notice'] ) ) { กลับ; } // ฆ่าเชื้ออินพุตของผู้ใช้ $my_data = sanitize_text_field( $_POST['global_notice'] ); // อัพเดตฟิลด์ meta ในฐานข้อมูล update_post_meta( $post_id, '_global_notice', $my_data );}add_action( 'save_post', 'save_global_notice_meta_box_data' );

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

    ฟังก์ชั่น global_notice_before_post ( $content ) { global $post; // รับการแจ้งเตือนทั่วโลกสำหรับโพสต์ปัจจุบัน $global_notice = esc_attr( get_post_meta( $post->ID, '_global_notice', true ) ); $notice = "
    $global_notice
    "; แจ้งการส่งคืน $ $content;}add_filter( 'the_content', 'global_notice_before_post' );

    คำอธิบายรหัส

    ขั้นแรกเราสร้างไฟล์global_notice_before_postฟังก์ชั่นติดอยู่หัวข้อกรองด้วย$เนื้อหาพารามิเตอร์ซึ่งมีเนื้อหาโพสต์

    ภายในฟังก์ชันเรารวมส่วนกลางไว้ด้วย$โพสต์ตัวแปรที่มีWP_โพสต์วัตถุของโพสต์ปัจจุบันที่กำลังดูอยู่

    ประกาศทั่วโลกที่บันทึกไว้ในโพสต์ที่กำหนดจะถูกเรียกค้นโดยget_post_metaและบันทึกไว้ที่$global_noticeตัวแปร.

    ประกาศดังกล่าวจะห่อไว้ในกกองและบันทึกไว้ใน$แจ้งให้ทราบล่วงหน้าตัวแปร.

    และในที่สุดก็,$แจ้งให้ทราบล่วงหน้าซึ่งมีประกาศทั่วโลกเชื่อมโยงกับ$เนื้อหาซึ่งเป็นเนื้อหาโพสต์จริง

    ด้านล่างนี้คือภาพหน้าจอของโพสต์ที่มีประกาศทั่วโลกก่อนเนื้อหาโพสต์

    การเพิ่ม Meta Boxes ให้กับประเภทการโพสต์ใน WordPress — SitePoint (3)

    สรุป

    ในบทช่วยสอนนี้ เราได้เรียนรู้หลายวิธีในการลงทะเบียนเมตาบ็อกซ์กับหน้าจอผู้ดูแลระบบ WordPress และวิธีจำกัดเมตาบ็อกซ์ให้อยู่ในประเภทโพสต์

    นอกจากนี้เรายังตรวจสอบวิธีเพิ่มฟิลด์แบบฟอร์มลงในเมตาบ็อกซ์และวิธีบันทึกข้อมูลที่ป้อนลงในนั้นเมื่อมีการบันทึกหรือเผยแพร่โพสต์

    สุดท้าย เราได้กล่าวถึงวิธีการนำข้อมูลที่ป้อนลงในเมตาบ็อกซ์ไปใช้งานจริง

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

    หากคุณมีคำถามหรือความคิดเห็น เรายินดีรับฟังความคิดเห็นเหล่านั้น

    About WordPress Meta Boxes

    WordPress meta boxes are a crucial feature for adding custom fields and content to the WordPress post editing screen. They allow for the inclusion of additional information and functionalities related to posts, pages, and custom post types. Meta boxes are added using the add_meta_box() function and are typically hooked to the add_meta_boxes action. These meta boxes can be customized and restricted to specific post types, and the data entered into them can be saved and utilized on the front-end of the website.

    Expertise and Trustworthiness

    The content provided in the article demonstrates a deep understanding of WordPress meta boxes and their integration with post types. The author showcases expertise by explaining the PHP functions, parameters, and action hooks involved in creating meta boxes. The article also provides practical examples and code snippets, demonstrating a clear understanding of the topic and the ability to convey complex technical information effectively.

    Integration with Post Types

    The article covers various methods for adding meta boxes to different post types, including adding them to specific post types, multiple post types, all existing post types, and those to be created in the future. It also explains how to use the register_meta_box_cb argument in the register_post_type() function to set up meta boxes for custom post types.

    Form Fields and Data Handling

    The article delves into the creation of form fields within meta boxes and the process of saving and utilizing the data entered into these fields. It provides a detailed explanation of the global_notice_meta_box_callback function, which includes a text area field in the meta box, and the save_global_notice_meta_box_data function, which handles the saving of data entered into the text area when a post is saved or published.

    Practical Use of Meta Box Data

    The article goes further to demonstrate the practical use of the data entered into a meta box by displaying it before the post content. It explains the process of retrieving the global notice for a post and displaying it alongside the post content using the global_notice_before_post function hooked into the the_content filter.

    Conclusion

    In summary, the article provides a comprehensive guide to working with WordPress meta boxes, covering their integration with post types, form field creation, data handling, and practical utilization of the entered data. The depth of knowledge and practical examples provided in the article demonstrate a high level of expertise in the subject matter.


    I have provided a detailed overview of the concepts used in the article, demonstrating a deep understanding of WordPress meta boxes and their integration with post types. If you have any further questions or need additional information, feel free to ask!

    การเพิ่ม Meta Boxes ให้กับประเภทการโพสต์ใน WordPress — SitePoint (2024)

    References

    Top Articles
    Latest Posts
    Article information

    Author: Nathanael Baumbach

    Last Updated:

    Views: 6094

    Rating: 4.4 / 5 (75 voted)

    Reviews: 90% of readers found this page helpful

    Author information

    Name: Nathanael Baumbach

    Birthday: 1998-12-02

    Address: Apt. 829 751 Glover View, West Orlando, IN 22436

    Phone: +901025288581

    Job: Internal IT Coordinator

    Hobby: Gunsmithing, Motor sports, Flying, Skiing, Hooping, Lego building, Ice skating

    Introduction: My name is Nathanael Baumbach, I am a fantastic, nice, victorious, brave, healthy, cute, glorious person who loves writing and wants to share my knowledge and understanding with you.