TianDev

Lưu ý khi sử dụng save_post để lưu post meta trong wordpress

Posted: December 3, 2019 by anhkevin

save_post là action được kích hoạt bất cứ khi nào đăng bài mới và cập nhật post theo mọi hình thức đều sẽ đi qua action này.

Vậy vấn đề ở đây là gì?

VD: Sử dụng đoạn code phía dưới để thêm hay cập nhật dữ liệu post meta cho post type

function update_post($post_id) {
    //[START][CODING] - post meta
    $link_download = $_POST['link_download'];
    update_post_meta( $post_id, '_link_download', $link_download );
    //[END][CODING] - post meta
}
add_action( 'save_post', 'update_post' );

Khi đó mọi hình thức update đều vào action ‘save_post’ này.
Trường hợp sử dụng chức năng khác để update dữ liệu nhưng chức năng đó không có dữ liệu custom field, chẳng hạn như sử dụng chức năng "Quick edit", "Revision" => lúc này không có dữ liệu post meta, nếu bạn chỉ get dữ liệu _POST về rồi update thì lúc này dữ liệu sẽ bị update thành dữ liệu trống

- Trường hợp này có nhiều cách giải quyết

  1. Kiểm tra isset trước khi xử lý
if(isset($_POST['link_download'])) {
...
}

  1. Check thêm điều kiện trường hợp ở màn hình add hoặc edit mới xử lý


tùy vào mục đích thì sẽ có cách xử lý riêng

=> Bài viết này chỉ là lưu ý khi sủ dụng save_post để cập nhật bất kỳ dữ liệu của post type.