Обновление сообщения Wordpress не работает с add_post_meta

У меня проблема на моем сайте WordPress. У меня есть несколько сообщений, созданных прогой с помощью:

$post_id=  wp_insert_post( $post);

После этого я хочу добавить настраиваемое поле в этот новый созданный пост. Поэтому я использую:

add_post_meta( $post_id, 'Meta_key', 'Meta_value' );

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

Сделав это, я увидел в БД, что он добавляет мета_ключ _nameofmycustumfield и мета_значение с ключом пользовательского поля: field_545ba53261f65.

Но когда я пытаюсь обновить с помощью программы сообщение с wp_update_post(), оно, похоже, не обновляет сообщение, как если бы я нажимал кнопку публикации, потому что он не вставляет мета_ключ и мета_значение с ключом пользовательского поля. БД содержит только 1 строку с реальным значением моего пользовательского поля, которое я добавляю, когда использую add_post_meta().

Кто-нибудь знает, как решить эту проблему?


person Gustav    schedule 02.12.2014    source источник
comment
Чтобы update post meta, вы должны использовать update_post_meta. Вы пробовали update_post_meta( $post_id, 'Meta_key', 'Meta_value' );?   -  person Dipak G.    schedule 03.12.2014
comment
Да, я пробовал с update_post_meta... все еще не работает   -  person Gustav    schedule 03.12.2014


Ответы (1)


Когда мне нужно сделать то, что вы описываете, я использую плагин acf.

Сначала я создаю категорию сообщений, затем настраиваю группу полей acf для этой категории.

После этого я использую тот же метод, что и вы, но указываю правильную категорию в переменной $my_post. Когда сообщение создано и ему присвоена категория, acf создает правильные метаполя. Который я затем обновляю правильными значениями.

// Create post object
$my_post = array(
  'post_title'    => $title,
  'post_content'  => '',
  'post_status'   => 'publish',
  'post_author'   => 1,
  'post_category' => array(5)
);

// Insert the post into the database
$my_ID = wp_insert_post( $my_post );

update_post_meta($my_ID, 'first-name', $fname);
person joshyy    schedule 19.08.2015