Liên hệ

[WP] Kiểm tra xem bài viết tồn tại chưa, nếu chưa thì tạo, nếu tồn tại thì update.

Việc kiểm tra xem bài viết đó đã tồn tại chưa, khi update hoặc tạo mới khá là quan trọng, thường được sử dụng trong việc crawl data.

1. Tạo hàm kiểm tra xem bài viết đã tồn tại chưa.

  • Ở đây mình kiểm tra với điều kiện đơn giản là id.
function get_post_by_meta($post_id, $post_type)
{
    $list_post = '';
    $args = array(
        'post_type'   => $post_type,
        'post_status' => array(                 
            'publish',            
            'pending',               
            'draft',                     
            'auto-draft',
            'future',
            'private',
        ),
        'p' => $post_id,
        'orderby'           => 'date',
        'order'             => 'DESC',
    );
    // Bạn có thể sử dụng các điều kiện khác để get post tùy theo website
    $list_post = get_posts($args);

    return $list_post;
}

2.  Tạo hàm tạo post mới

  • Hàm này sẽ kiểm tra xem bài viết đã tồn tại chưa, nếu chưa thì sẽ tạo 1 post mới, nếu tồn tại rồi sẽ return về id của post đó.
function check_insert_update_post($data)
{
    $args = array(
        'post_title'   => $data['post_title'],
        'post_content' => $data['post_content'],
        'post_status'  => 'draft', // pending, publish, private
        'post_author'  => $data['user_id'],
        'post_type'    => $data['post_type'],
        'tax_input'    => array(
            'category'    =>  $data['id_category'],
        ),
        'meta_input'        => array(),
    );

    $check = get_post_by_meta($data['id'],$data['post_type']);
    // Kiểm tra xem post đã tồn tại chưa nếu chưa tạo 1 post mới với các thông số cơ bản
    if(count($check) === 0)
    {
        $post_id = wp_insert_post($args);
        foreach( $args['tax_input'] as $taxonomy => $terms ) 
        {
            wp_set_post_terms( $post_id, $terms, $taxonomy  );
        }
    }
    else
    {
        $post_id = $check[0]->ID;
    }

    return $post_id;
}

3. Tạo hàm Update Post

function create_post() {
    $data = array(
        'post_title'            => 'Vi du ne',
        'post_content'          => 'Ví dụ tạo nội dung mới cho bài viết',
        'user_id'               => 1,
        'post_type'             => 'post',
        'id_category'           => 283,
        'id'                    => 5148,
    );
    $post_id = check_insert_update_post($data);
    $args = array(
        'ID'                => $post_id,
        'post_title'   => $data['post_title'],
        'post_content' => $data['post_content'],
        'tax_input'         => array(
            'category'    => $data['id_category'],
        ),
        'meta_input'        => array()
     );
    $update_post = wp_update_post ($args, true);
    if (count($args['tax_input']) > 0) {
        foreach( $args['tax_input'] as $taxonomy => $terms ) {
            wp_set_post_terms( $post_id, $terms, $taxonomy  );
        }
    } 
    return $post_id;
}

=> Ở đây mình chỉ sử dụng 1 số thông số đơn giản để update, tùy vào mục đích chúng ta dùng nó để update. nhiều thông số hơn như là các meta. Nó rất hữu dụng cho việc update và insert khi crawl post, mà không sợ chùng lập các bài viết đã có sẵn.

Việc cuối cùng là sử dụng create_post(); ở nơi cần action.

Chúc bạn thành công.


Disclaimer: Bài viết của chỉ nhằm mục đích cung cấp thông tin, kiến thức và bài viết này.

Follow us:
  • Facebook:
  • Website:

Bài viết được đọc nhiều