У меня есть проблема на моем сайте WordPress. У меня есть несколько сообщений, которые создаются с помощью прог с:
$post_id= wp_insert_post( $post);
После, я хочу добавить настраиваемое поле в этом новом созданном сообщении. Поэтому я использую:
add_post_meta( $post_id, 'Meta_key', 'Meta_value' );
Работает хорошо, пост создан и значение настраиваемого поля правильно введено в пост. Тем не менее, кажется, что фронт не может отображать содержимое моего настраиваемого поля, потому что настраиваемое поле, похоже, не создано. Единственный способ, которым я могу заставить это работать, состоит в том, чтобы перейти к моему сообщению и нажать кнопку публикации.
Сделав это, я увидел в БД, что он добавляет meta_key _nameofmycustumfield
и meta_value с ключом настраиваемого поля: field_545ba53261f65
,
Но когда я пытаюсь обновить прогой пост с wp_update_post()
Похоже, что он не обновляет сообщение, как если бы я нажимал на кнопку публикации, потому что он не вставляет meta_key и meta_value с ключом настраиваемого поля. БД содержит только 1 строку с реальным значением моего настраиваемого поля, которое я добавляю при использовании add_post_meta()
,
Кто-нибудь знает, как решить эту проблему?
Когда я должен сделать то, что вы описываете, я использую плагин 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);
Других решений пока нет …