Есть произвольный тип записи, созданный через function.php и на отдельной странице подвязан код с формой для создания в ней записи. К этой странице есть доступ у всех.
Вот в чем вопрос, когда я создаю запись через авторизованного пользователя с ролью Администратор или с любой у кого есть доступ к записям, то форма работает корректно. А у подписчиков не добавляются теги а сама запись создается.
Как быть в такой ситуации? Может нужно объявить глобальные переменные для ролей? Так как доступ к консоли ВП не хотелось бы давать всем.
Вот код добавления записи backend:
$error = false;
$post_title = $_POST['title'];
$post_category = $_POST['cat'];
$post_tag = $_POST['tag'];
if(trim($_POST['collection_new'])){
$post_collection = $_POST['collection_new'];
}else{
$post_collection = $_POST['collection'];
}
$post_content = $_POST['textbook'];
$post_excerpt = $_POST['excerpt'];
$post_auditor = $_POST['auditor'];
if(trim($_POST['theend'])){
$post_theend = $_POST['theend'];
}else{
$post_theend = 'no';
}
$new_post = array(
'ID' => '',
'post_author' => $user->ID,
'post_type' => 'book',
'post_content' => $post_content,
'tax_input' => array(
'genre' => $post_category,
'writer' => $post_tag,
'collection' => $post_collection
),
'post_title' => $post_title,
'post_status' => 'publish',
'post_excerpt' => $post_excerpt,
'meta_input' => [
'auditor' => $post_auditor,
'status' => 'no',
'blocked' => 'no',
'theend' => $post_theend,
'post_views_count' => 0,
],
);
if($_FILES['image_upload']['size'] > 0){
$uploadedfile = $_FILES['image_upload'];
if ( ! function_exists( 'wp_handle_upload' ) ) {
require_once( ABSPATH . 'wp-admin/includes/file.php' );
}
$upload_overrides = array( 'test_form' => false );
$movefile = wp_handle_upload( $uploadedfile, $upload_overrides );
if ($movefile && !isset( $movefile['error'] ) ) {
$filename = $movefile['file'];
$filetype = wp_check_filetype( basename( $filename ), null );
$wp_upload_dir = wp_upload_dir();
$attachment = array(
'guid' => $wp_upload_dir['url'] . '/' . basename( $filename ),
'post_mime_type' => $filetype['type'],
'post_title' => preg_replace( '/\.[^.]+$/', '', basename( $filename ) ),
'post_content' => '',
'post_status' => 'inherit'
);
$attach_id = wp_insert_attachment( $attachment, $filename, $parent_post_id );
require_once( ABSPATH . 'wp-admin/includes/image.php' );
$attach_data = wp_generate_attachment_metadata( $attach_id, $filename );
wp_update_attachment_metadata( $attach_id, $attach_data );
} else {
echo $movefile['error'];
$error = true;
}
}
if($error == false){
$post_id = wp_insert_post($new_post);
if(trim($attach_id)){
set_post_thumbnail($post_id, $attach_id);
}
$post = get_post($post_id);
wp_redirect($post->guid);
exit;
}