на этот вопрос был дан ответ в stackoverflow. вот ссылка
я пытаюсь позволить пользователям публиковать сообщения на моем сайте с помощью wp_insert_post()
функции..
<?php $postTitle = $_POST['post_title'];
$post = $_POST['post'];
$submit = $_POST['submit'];
if(isset($submit)){
global $user_ID;
$new_post = array(
'post_title' => $postTitle,
'post_content' => $post,
'post_status' => 'publish',
'post_date' => date('Y-m-d H:i:s'),
'post_author' => $user_ID,
'post_type' => 'post',
'post_category' => array(7,100)
);
wp_insert_post($new_post);
}
?>
Я подключил это к форме на странице категории
<form method="post" action="">
<input type="text" name="post_title" size="45" id="input-title"/>
<textarea rows="5" name="post" cols="66" id="text-desc"></textarea>
<input type="hidden" name="cat" value="7,100"/>
<input class="subput round" type="submit" name="submit" value="Post"/>
</form>
Я не знаю, что id сделал не так.. это не работает. есть идеи? Спасибо
на самом деле это я здесь, это правильно в фактическом файле
Каково возвращаемое значение
wp_insert_post()
? Не могли бы вы добавитьvar_dump()
вокруг него? Он возвращает новый идентификатор в случае успеха и aWP_Error
в случае неудачи. Последний должен содержать сообщение об ошибке.не успешно и без ошибок.. точно так же
Общий дешевый совет по отладке: размещайте
var_dump(__LINE__)
вwp_insert_post()
функции в разных местах, чтобы узнать, до какого места выполняется код. Он должен выводить номера строк, и если он останавливается, вы знаете, что следующееvar_dump()
не достигнуто. При необходимости повторите, чтобы определить проблему. Нам нужна более конкретная информация, чтобы мы могли вам помочь.это не работает, даже когда я (админ) вошел в систему… запутался
когда я тестировал его в function.php, он работал нормально… но я до сих пор не уверен, почему он не работает… я посмотрю вокруг
wp_insert_post() использует текущего пользователя в нескольких точках, если не изменяет память.
Итак, вы хотели бы использовать wp_set_current_user(), чтобы переключить это на какого-то общего пользователя-автора, а затем вернуть его к исходному значению, когда вы закончите.
В качестве альтернативы потребуйте, чтобы пользователи вошли в систему, и разрешите всем группам создавать черновики.
Одна проблема у вас есть
вы объявляете $submit в строке выше
поэтому
всегда будет возвращать TRUE и выполнять ваш код.
я бы еще добавил
Затем пропустите post_date и post_type с вашими значениями, которые все равно добавляются. Чем меньше вы переходите к этой функции, тем меньше вы можете сделать неправильно…
Я бы попытался добавить это, например, в ваш скрипт function.php.
Это должно вставить сообщение новостей с заданными значениями… Если это сработает, вы знаете, что вам нужно искать ошибку в своей форме. Хотя я думаю, что вы не можете передавать категории в wp_insert_post…. Но сначала попробуйте простой тест.