Я создал небольшой плагин WordPress, который подключается к внешнему API, и все работает очень хорошо, включая обновление существующих сообщений, но у меня есть одна проблема. Я пытаюсь удалить сообщения, которые не доступны на API после каких-либо обновлений. Я думаю, что лучшая идея состоит в том, чтобы сравнить 2 массива один из $ 1007 * и один из существующего поста и проверить, все ли элементы совпадают. Если нет, я хотел бы повторить тот идентификатор, который больше не существует и на основании этого удалить сообщение с этим идентификатором.
public function collect_data()
{
global $wpdb;
$json = $this->get_data();
foreach ( $json as $position ) {
$item_id = $position["id"];
$title = $position["names"][0]["value"];
$content = $position["descriptions"][0]["rawText"];
$city = $position["mainLocation"]["address"]["city"];
// find item's ID
$found_id = (int)$wpdb->get_var( $wpdb->prepare( "SELECT post_id FROM $wpdb->postmeta where meta_key ='mj_api_item_id' and meta_value = '%s'", $item_id ) );
// prepare data
$args = array(
'post_title' => $title,
'post_type' => 'mj_jobs',
'post_content' => $content,
'post_status' => 'publish',
);
$is_update = false;
// is necessary?
//if ( null == get_page_by_title( $title, OBJECT, 'mj_jobs' ) ) {
// better by ID
if( $found_id > 0 )
{
$args['ID'] = $found_id;
// item has been found so change flag
$is_update = true;
}
// Insert/Update post
$post_id = wp_insert_post( $args );
update_post_meta( $post_id, 'jacando_city', $city );
update_post_meta( $post_id, 'jacando_id', $item_id );
if( !is_wp_error($post_id) ) {
// save items ID
if( !$is_update ) {
update_post_meta($post_id, 'mj_api_item_id', $item_id);
}
// and set last update date
update_post_meta($post_id, 'mj_api_last_update', date('Y-m-d H:i:s'));
}
}
}
Я пытался сделать это с помощью array_diff, но у меня проблемы с получением 2 массивов из foreach l oop. Было бы здорово, если бы кто-нибудь мог мне подсказать, с чего начать удалять пост в WordPress, который больше не существует во внешнем API.
Спасибо