Thêm field vào Publish box WordPress

Cập nhật lần cuối vào

Meta box là một trong những tính năng hay của WordPress, với Meta box bạn có thể tạo ra nhiều trường thông tin khác nhau cho bài viết. Nhưng nếu bạn không muốn tạo ra meta box mới mà bây giờ bạn muốn thêm một vài thuộc tính nào đó vào ô Publish bài viết của WordPress, bài viết này mình sẽ hướng dẫn cho bạn làm điều đó.

Thêm field vào Publish box WordPress

Cái này cũng khá đơn giản, để có thể thêm được field vào trong ô Publish bài viết của WordPress bạn chỉ cần dùng 2 hook là đủ, một cái là để bạn hiển thị code HTML, một cái là để bạn lưu lại meta cho bài viết.

function hocwp_content_captcha_publish_box_meta_field() {
    global $post;
    if(!hocwp_object_valid($post)) {
        return;
    }
    $post_type = $post->post_type;
    $post_types = hocwp_content_captcha_get_post_types();
    if(in_array($post_type, $post_types)) {
        $key = 'content_captcha';
        $value = get_post_meta($post->ID, $key, true);
        $args = array(
            'id' => 'hocwp_post_use_content_captcha',
            'name' => $key,
            'value' => $value,
            'label' => __('Use content captcha?', 'hocwp-content-captcha')
        );
        hocwp_field_publish_box('hocwp_field_input_checkbox', $args);
    }
}
add_action('post_submitbox_misc_actions', 'hocwp_content_captcha_publish_box_meta_field');

Với action post_submitbox_misc_actions, bạn có thể thêm bao nhiêu mục tùy thích vào ô Publish bài viết của WordPress. Trong đoạn code bên trên mình có dùng các hàm riêng trong bộ code của hocwp.net để tạo ra HTML, đối với bạn thì bạn cần thay đổi lại để phù hợp nhé.

function hocwp_content_captcha_save_post_meta($post_id) {
    if(!hocwp_can_save_post($post_id)) {
        return $post_id;
    }
    $value = isset($_POST['content_captcha']) ? 1 : 0;
    update_post_meta($post_id, 'content_captcha', $value);
    return $post_id;
}
add_action('save_post', 'hocwp_content_captcha_save_post_meta');

Tiếp đến bạn dùng action save_post để lưu lại thông tin meta của bài viết. Trong action save_post, bạn dùng các name trong biến toàn cục $_POST.

Chú ý, trong các bài hướng dẫn của mình trên blog hocwp.net, mình chỉ gợi ý cho các bạn cách thực hiện, trong nội dung của hàm có các hàm mình đã viết sẵn, bạn cần thay đổi lại để tránh lỗi gọi hàm chưa được khai báo trong PHP. Chúc bạn thành công.