Thứ Sáu, 12 tháng 9, 2014

Thêm field trong wordpress post (add meta box)

Thông thường với trang web được viết bằng wordpress trong Admin khi post bài chúng ta có các field sau:
1. Tiêu đề
2. Nội dung
3. Categories
4. Tags
5.  …
Đôi khi chúng ta cần thêm một số trường khác ngoài những trường đã có sẵn, các bạn mới học wordpress có thể tìm hiểu và thử tạo cho mình một số trường theo yêu cầu riêng của trang web của mình.
Bây giờ chúng ta sẽ thêm mới một trường nữa vào sau field Nội Dung
6. tên trường là my_text (lưu trữ thông tin tác giả bài viết)
Các bạn làm như sau:
A. mở file …/wp-content/themes/your_themes/functions.php
Step 1 Khai báo meta box

$prefix = 'my_';
 $meta_box = array(
     'id' => 'my-meta-box',
     'title' => 'Customize meta box',
     'page' => 'post',
     'context' => 'normal',
     'priority' => 'high',
     'fields' => array(
         array(
             'name' => 'Author by',
             'desc' => '(Tác giả bải viết)',
             'id' => $prefix.'text',
             'type' => 'text',
             'std' => ''
         )
     )
 );
Step 2: khai báo các hàm sau để gọi khi Admin chọn Posts / Add New or Edit

add_action('admin_menu', 'wdnvnew_add_box');
 // Add meta box
 function wdnvnew_add_box() {
     global $meta_box;
     add_meta_box($meta_box['id'], $meta_box['title'], 'wdnvnew_show_box', $meta_box['page'], $meta_box['context'], $meta_box['priority']);
 }

// callback function to show fields in meta box
 function wdnvnew_show_box() {
     // Ở đây wordpress không cho hiển thị code nên các bạn xem hình 1 
 }

wordpress-add-meta-box-functionhình 1 hoặc xem link 
Step 3: Khai báo hàm khi lưu dữ liệu

add_action('save_post', 'wdnvnew_save_data');
 // Save data from meta box
 function wdnvnew_save_data($post_id) {
     global $meta_box;
     // verify nonce
     if (!wp_verify_nonce($_POST['wdnvnew_meta_box_nonce'], basename(__FILE__))) { 
return $post_id; }
     // check autosave
     if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) { 
return $post_id; }

     // check permissions
     if ('page' == $_POST['post_type']) {
         if (!current_user_can('edit_page', $post_id)) { 
return $post_id; }
     } elseif (!current_user_can('edit_post', $post_id)) { 
return $post_id; }

     foreach ($meta_box['fields'] as $field) {
         $old = get_post_meta($post_id, $field['id'], true);
         $new = $_POST[$field['id']];
         if ($new && $new != $old) { 
update_post_meta($post_id, $field['id'], $new); } 
         elseif ('' == $new && $old) { 
delete_post_meta($post_id, $field['id'], $old); }
     }
 }
Bây giờ các bạn vào trong Admin chọn Posts / Add New
Các bạn sẽ thấy hình form post dữ liệu thêm một Fields mới là Author như hình sau:
wordpress-add-meta-box
Chúc các bạn thành công

Không có nhận xét nào:

Đăng nhận xét