2015-10-04 5 views
2

Я модифицирую существующий плагин, и я хочу добавить новое поле в форму, а затем отправить это поле вместе с сообщением. Сообщение отправляется в wp_posts. Я читал в Google, что для этого просто нужно использовать update_post_meta. Я пытаюсь вставить данные в новый столбец, который я сделал в PHPMyAdmin. Я назвал колонку post_amount. Имя поля - amount_field. Хотя я новичок, что-то о «просто используйте update_post_meta», которое я прочитал, кажется слишком простым, чтобы быть всем, что мне нужно. Но я могу ошибаться. Может быть, я использую это неправильно?Wordpress: update_post_meta не работает

Примечание - вся эта попытка связана с тем, что я хочу создать новый столбец в таблице wp_posts и добавлять к нему данные с каждым сообщением. Это даже правильный способ сделать это? Я вижу слова «meta_key» и «meta_value», и это заставляет меня думать, что на самом деле это приведет к добавлению данных в таблицу wp_postmeta .... или это предназначение?

$question_array = array(
      'post_title'  => $fields['title'], 
      'post_author'  => $user_id, 
      'post_content'  => apply_filters('ap_form_contents_filter', $fields['description']), 
      'post_type'   => 'question', 
      'post_status'  => $status, 
      'comment_status' => 'open', 
     ); 

     if(isset($fields['parent_id'])) 
      $question_array['post_parent'] = (int)$fields['parent_id']; 

     $question_array = apply_filters('ap_pre_insert_question', $question_array); 

     $post_id = wp_insert_post($question_array); 

     $post_amount = $fields['amount_field']; //My code 

     update_post_meta($post_id, 'post_amount', $post_amount); //My code 

ответ

0

Я думаю, вы совершили ошибку, обновив свой post_id.

В update_post_meta($post_id, 'post_amount', $post_amount);

у вас нет ID поста или ID вы хотите обновить. $ post_id параметр объявляется вставить сообщение в ваш код выше. $post_id = wp_insert_post($question_array); Итак, обновить сообщение не удалось найти ID.

Необходимо ID обновить сообщение мета. Он не нашел идентификатор, поэтому он не обновлял meta_key. ИЗВИНИТЕ ЗА МОЙ АНГЛИЙСКИЙ.

Попробуйте использовать add_post_meta вместо update_post_meta.

См. Reference

+1

Подождите, я смущен. Я думал, что когда вы используете '$ post_id = wp_insert_post ($ question_array)', если вставка прошла успешно, то 'wp_insert_post' возвращает идентификатор сообщения. Поэтому он хранится в '$ post_id'. Я увидел это в ответе на этот вопрос: http://stackoverflow.com/questions/19191254/wordpress-update-post-meta-and-get-post-meta. Вы говорите, что мой пост не вставлен успешно? Потому что я смотрю в PHPMyAdmin, и я вижу, что он появляется там. – DarthVoid

+0

Да, вы правы. Попробуйте 'add_post_meta' вместо' update_post_meta'. Я имел в виду, что 'update_post_meta' работает, когда есть существующий' ID' сообщения. Иногда новый meta не обновляется с помощью 'update_post_meta'. Он должен работать, если вы используете 'add_post_meta'. –

+0

Он все еще не работает. [Взгляните на это изображение] (http://imgur.com/HNzOF7s) - столбец по-прежнему не заполняется данными. Что может быть причиной этого? Что я должен проверить? – DarthVoid