Post meta hay còn gọi là custom field được wordpress cấu hình sẳn nó là những giá trị text field cho phép nhập các giá trị text. Nhưng khi ta muốn tùy biến các text field này thành các dạng dữ liệu như ngày tháng năm, số hoặc chuyển từ kiểu text field sang kiểu select ta sẽ sử dụng một phương thức gọi là meta box. Các biến giá trị trong meta box sẽ được gọi là post meta. Và không lòng vòng nữa đây là phần code:
1.Khỏi tạo Meta Box
function wpdocs_register_meta_boxes() { add_meta_box( 'meta-box-id', __( 'INFO', 'WA' ), 'wpdocs_my_display_callback', 'post' ); } add_action( 'add_meta_boxes', 'wpdocs_register_meta_boxes' );
ở đây ta chú ý post type là “post” nhé các bạn có thể tùy chỉnh theo từng loại post type ví dụ “page” cho trang.
2.Nội dung hàm hiển thị Meta box
function wpdocs_my_display_callback( ) { global $post; $meta_post_title = get_post_meta($post->ID, 'meta_post_title', true); $post_desc = get_post_meta($post->ID, 'post_desc', true); ?> <table class="form-table"> <tr> <th> <label>Title</label> </th> <td> <textarea name="meta_post_title" class="large-text"><?php echo $meta_post_title; ?></textarea> </td> </tr> <tr> <th> <label>Description</label> </th> <td> <textarea name="post_desc" class="large-text"><?php echo $post_desc; ?></textarea> </td> </tr> </table> <?php }
3. Hàm lưu lại giá trị
add_action( 'save_post', 'wpdocs_save_meta_box' ); function wpdocs_save_meta_box() { global $post; $quote_post_meta['meta_post_title'] = $_POST['meta_post_title']; $quote_post_meta['post_desc'] = $_POST['post_desc']; foreach( $quote_post_meta as $key => $value ) { // cycle through the $quote_post_meta array $value = implode(',', (array)$value); // if $value is an array, make it a CSV (unlikely) if( get_post_meta( $post->ID, $key, FALSE ) ) { // if the custom field already has a value update_post_meta($post->ID, $key, $value); } else { add_post_meta( $post->ID, $key, $value ); } if( !$value ) { delete_post_meta( $post->ID, $key ); } } }
Chúc các bạn thành công nhé !
eebest8 back says
“Thank you, I have recently been searching for info about this topic for a long time and yours is the best I’ve discovered so far. However, what concerning the conclusion? Are you sure concerning the source?”