Intereting Posts
Попытка удалить миниатюру сообщения с помощью плагина Включить несколько идентификаторов страниц в цикле next_post_link и previous_post_link не работают должным образом image_resize в wp3.5 изменить на wp_get_image_editor и не будет работать Где доступны роли, определенные в базе данных wp_? Изменить выход для изображений в контенте Добавить текст, чтобы опубликовать список / редактировать экраны? Настроить загрузку медиафайлов WordPress и меню нового медиа-менеджера в добавить сообщение Metabox Как короткий код может заменить изображение в сообщении? Как изменить заголовок страницы wp-login.php? Вопрос WP Google Fonts Совместное использование сообщений и пользовательских типов сообщений на двух установках WordPress Функция query_posts () делает глобальную $ wp_query не синхронизированной? Показ пользовательского таксономического родительского термина и детского срока публикации «Ограничение open_basedir», но проект находится в пределах допустимых путей

Сообщение участника, которое будет рассмотрено и опубликовано только одним редактором

Я пытаюсь найти способ / плагин, где сообщения автора могут быть отредактированы или опубликованы только конкретным редактором пользователя.

Например, если у меня есть вкладчик по имени Стив и редактор по имени Боб, посты / проект Стива должны быть просмотрены и опубликованы только Бобом, который назначен для автора. Никакие другие редакторы (за исключением, конечно, админа) не могут «коснуться» работы Стива, только Боб может.

Это возможно? Я попробовал членов подключаемого модуля, но я могу ограничивать просмотр и публикацию сообщения вкладчика роли пользователя, а не конкретному пользователю.

Вы не говорите, как вы сохраняете редактор -> ассоциации вкладчиков, я предполагаю, что вы храните его в мета-поле пользователя с ключом 'assigned_contrib' где вы сохраняете массив идентификаторов пользователей.

Прежде всего, спрячьте сообщения другим редакторам, используя pre_get_posts hook:

 add_action('pre_get_posts', 'hide_posts_to_editors'); function hide_posts_to_editors( $query ) { if ( is_admin() && ! current_user_can('administrator') ) { $self = wp_get_current_user(); $assigned_contributors = (array) get_user_meta($self->ID, 'assigned_contrib', true); $authors = array_merge($self->ID, $assigned_contributors); $query->set( 'author', implode(',', $authors) ); } } 

Таким образом, редактор может видеть только сообщения администратора, написанные им самим и теми, которые назначаются редакторам.

Но это не мешает и редактор, который знает идентификатор сообщения, чтобы отредактировать его, вручную вставив идентификатор в адресную строку … вы можете использовать load_{$page} action hook для области, в данном случае ( 'load-post.php' )

 add_action('load-post.php', 'no_editors_edit', 1); function no_editors_edit() { if ( current_user_can('administrator') ) return; $post = isset($_GET['post']) && ! empty($_GET['post']) ? $_GET['post'] : false; if ( ! $post ) return; $author = get_post_field('post_author', $post); $self = wp_get_current_user(); $assigned_contributors = (array) get_user_meta($self->ID, 'assigned_contrib', true); if ( ( $author != $self->ID ) && ! in_array($author, $assigned_contributors) ) { wp_redirect( add_query_arg( array('edit_not_allowed'=>1), admin_url() ) ); exit(); } } 

И добавьте уведомление, если это произойдет …

 add_action('admin_notices', 'no_editors_edit_notice'); no_editors_edit_notice() { if ( isset($_GET['edit_not_allowed'] && $_GET['edit_not_allowed'] == 1) ) { printf('<div class="error"><p>%s</p></div>', __('You are allowed to edit only your posts and the ones by contributors assigned to you.', 'your_text_domain')); } }