Wordpress Вставить сообщение создать мета-ключ и мета-значение - PullRequest
0 голосов
/ 18 февраля 2020

Я создаю wp_insert_post для создания поста из json, при создании поста мне нужно создавать мета значения, я пробовал и add_post_meta, и update_post_meta безрезультатно. Кто-нибудь может помочь

foreach ($ response-> data as $ single_data) {

$post_title    = $single_data->name; 
$video_id = $single_data->uri;
$thumnbnail_url = $single_data->pictures->sizes[4]->link;



if (!post_exists($post_title)) { // Determine if a post exists based on title, content, and date
    $post_id = wp_insert_post(array(
        'post_type'  => 'vimeo_videos',
        'post_title' => $post_title,
        'post_status' => 'publish',
     ));

}
$newPostID = wp_insert_post($post_id);

global $post;

add_post_meta( $post->ID, 'vimeo_video_thumnbnail_url_key', $thumnbnail_url, true );
update_post_meta( $newPostID, 'video_url_id', $video_id );

Ответы [ 2 ]

0 голосов
/ 18 февраля 2020

Вы используете wp_insert_post дважды, что не имеет смысла. Первый wp_insert_post правильный и вернет $post_id созданного сообщения в случае успеха. Тем не менее, ваш

$newPostID = wp_insert_post($post_id);

абсолютно неверен и всегда будет хранить 0 в результате в $newPostID, независимо от того, существовала ли запись заранее или нет, так как $post_id никогда не будет содержать действительный массив записей. Вам нужно получить идентификатор существующего сообщения (которое post_exists уже возвращает в случае успеха). Измените свой код следующим образом:

$existingPostID = post_exists($post_title);
if (!$existingPostID) {
    $existingPostID = wp_insert_post(array(
        'post_type'  => 'vimeo_videos',
        'post_title' => $post_title,
        'post_status' => 'publish',
     ));
}
if ($existingPostID) {
  update_post_meta( $existingPostID, 'video_url_id', $video_id );
}

0 голосов
/ 18 февраля 2020

Для вставки нового поста используется следующий синтаксис:

add_post_meta (int $ post_id, строка $ meta_key, смешанное $ meta_value, bool $ unique = false)

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