Mam skrypt, który otrzymuje niektóre dane z interfejsu API i muszę wstawić te dane (tablica postów) w WordPress jako posty.

Więc co muszę zrobić:

  1. Zameldowanie każdego posta, jeśli istnieje lub nie należy unikać Dubs przez post_name lub slug lub title, jeśli to możliwe
  2. Zarejestrowałem niestandardową taksonomię z postem o nazwie {x0}} I muszę wstawić tę gazetę, cokolwiek jest przez title.
  3. Zarejestrowałem także niestandardowe pola z postem i klucze są fifu_img_url, fifu_img_alt i _cmb_link, więc potrzebuję sposobu na wstawienie danych do tych kluczy dla każdego postu

To będzie w odpowiedniej prośbie samej API, wykonałem część API i otrzymałem dane za pośrednictwem żądania postu, co pozostają obsługą dane, jak opisałem powyżej.

1
hesham shawky 31 lipiec 2020, 23:16

1 odpowiedź

Najlepsza odpowiedź

Zrobiłem to przez poniższe

$is_post_exists = post_exists($post->title);

if ($is_post_exists === 0) {
    $post_id = wp_insert_post(array(
        'post_title'    => $post->title,
        'post_date'     => $post->date,
        'post_content'  => $post->excerpt,
        'post_author'   => 1,
        'post_status'   => 'publish',
        'meta_input'    => array(
            'fifu_image_url'   => $post->image,
            'fifu_image_alt'   => $post->title,
            '_cmb_link'        =>  $post->link,
        )
    ));

    $termObj = get_term_by('name', $post->newspaper->title, 'newspaper');

    set_post_format($post_id, $post->type);

    if ($termObj) {
        wp_set_object_terms($post_id, array($termObj->term_id), 'newspaper');
    } else {
        $new_newspaper = wp_insert_term($post->newspaper->title, 'newspaper');

        wp_set_object_terms($post_id, array($new_newspaper['term_id']), 'newspaper');
    }

    if ($post_id) {
        $added_posts[] = $post_id;
    }
} else {
    $not_added_posts[] = $post->id;
}
1
hesham shawky 8 sierpień 2020, 05:32