Сравните 2 идентификатора массива и удалите сообщение, которое не соответствует - PullRequest
0 голосов
/ 26 января 2020

Я создал небольшой плагин 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.

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...