Я не могу заставить это работать. У меня есть страница, где пользователи могут отправлять свои сообщения. Там, в идеале, я хочу показать все категории и позволить им выбрать из выпадающего списка категорию для назначения сообщения. Я не смог справиться с этим, так как я новичок в PHP, поэтому я решил пойти шаг за шагом и сначала начать с добавления пустого поля ввода, где пользователи могут просто добавить произвольный текст, который станет категорией этого поста.
Для этого я сделал следующее:
if(isset($_POST['entry']) AND !$_POST['entry'] == ""):
$my_post = array();
$my_post['post_title'] = $_POST['title'];
$my_post['post_content'] = $_POST['entry'];
$my_post['post_status'] = 'publish';
$cat_name = sanitize_text_field($_POST['newcat']);
$my_post ['cat_name'] = $cat_name;
$my_post['post_author'] = get_current_user_id();;
// add post to database
$id = wp_insert_post( $my_post );
endif;
Итак, как вы можете видеть, я пытаюсь добавить категорию, связав ее с $ my_post и полем ввода "newcat".
И форма:
<form action="" method="post" role="form">
<label for="newcat">Category Name</label>
<input type="text" name="newcat" value="" />
</form>
Заголовок и содержание сообщения работают (удалили его из кода выше), но категория не работает вообще.
Может ли кто-нибудь мне помочь и объяснить, что я делаю неправильно и как я могу это решить?
Редактировать
Это также не работает:
if(isset($_POST['entry']) AND !$_POST['entry'] == ""):
$my_post = array();
$my_post['post_title'] = $_POST['title'];
$my_post['post_content'] = $_POST['entry'];
$my_post['post_status'] = 'publish';
$cat_name = sanitize_text_field( $_POST['newcat'] );
$my_post ['cat_name'] = $cat_name;
$category_id = get_cat_ID( $_POST['newcat'] );
if ( ! $category_id ) {
if ( ! is_admin() ) {
die();
}
$args = array(
'description' => "Category description",
'parent' => 0);
$category_id = wp_insert_term( $_POST['newcat'], "category", $args );
}
$my_post['post_author'] = get_current_user_id();
$my_post['tax_input'] = array('category' => $category_id);
wp_insert_post($my_post);
Здесь пост даже не добавляется в Wordpress, если эта конкретная категория не существует! Нет ошибок вообще, но нет и сообщения ...