wp-insert-post создает дубликаты - PullRequest
0 голосов
/ 15 мая 2019

Wordpress Проверяйте и удаляйте дублирующиеся записи перед использованием wp-insert-post.Данные декодируются из Json wp-remote-get.Я вставляю в тип пользовательской записи, и уникальное значение - «feefo_id».

Я пытался создать цикл if вокруг wp-insert, но когда я это делаю, я получаю 1 сообщение, а не все 17.

$feefo_data = wp_remote_get( 'https://api.feefo.com/api/10/reviews/all?enter code heremerchant_identifier=hide-and-seek-travel' );

$feefo_data_decode = json_decode( $feefo_data['body'] );

var_dump($feefo_data_decode);


foreach ( $feefo_data_decode->reviews as $item ) {
    $feefo_id       =$item->service->id;
    $post_title    = $item->service->title; // post title
    $post_content  = $item->service->review;
    $feefo_display_names    =   $item->customer->display_name;
    $feefo_display_location =   $item->customer->display_location;
    $feefo_rating   =   $item->service->rating->rating;




        $my_post = array(
            'post_title'  => $post_title,
            'post_content' => $post_content,
            'post_status' => 'publish',
            'post_type'   => 'feefo_reviews',
    );


$post_id = wp_insert_post( $my_post );

update_field( 'feefo_display_names', $feefo_display_names, $post_id );
update_field( 'feefo_display_location', $feefo_display_location, $post_id );
update_field( 'feefo_rating', $feefo_rating, $post_id );
//feefo_id is unique
update_field( 'feefo_id', $feefo_id , $post_id );
}

В настоящее время приведенный выше код извлекает данные из feefoи добавляет к пользовательскому сообщению под названием «feefo_reviews».Ты, когда я снова тяну, он дублирует.

Я стараюсь не вставлять дубликаты.Уникальный идентификатор - это $ feefo_id, который вставляется в поле ACF с именем feefo_id

.

Ответы [ 2 ]

1 голос
/ 15 мая 2019

Решение состоит в том, чтобы сохранить feefo_id в качестве мета-значения для созданной публикации. При каждом новом извлечении вы сначала проверяете, существует ли уже сообщение с таким мета-значением. Если true: изменить существующее сообщение, если нет: создать новое сообщение.

0 голосов
/ 16 мая 2019

Кажется, я решил проблему, но логика ускользает от меня. Начальный и конечный код WP-Query. Если у кого-то есть свободное время, не могли бы вы рассказать мне о том, что происходит в wp_query?

        $my_post = array(
            'post_title'  => $post_title,
            'post_content' => $post_content,
            'post_status' => 'publish',
            'post_type'   => 'feefo_reviews',
//Set feefo_id as meta to be called upon with wp_Query as setting it as ID did not work.
            'meta_input'  => array(
                'feefo_id' => $feefo_id
            )
    );


$mg_args = array(
    'post_type' => 'feefo_reviews',
    'meta_query' => array(
        array(
            'key' => 'feefo_id',
            'value' => $feefo_id,
        )
    )
        );

        $mg_query =new WP_Query( $mg_args );
            if( $mg_query ->have_posts()){

$post_id = wp_insert_post( $my_post );

update_field( 'feefo_display_names', $feefo_display_names, $post_id );
update_field( 'feefo_display_location', $feefo_display_location, $post_id );
update_field( 'feefo_rating', $feefo_rating, $post_id );
//feefo_id is unique
update_field( 'feefo_id', $feefo_id , $post_id );
}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...