Intereting Posts
Получить новый пароль без email Силовой «постоянный» почтовый кеш результатов короткого кода Пользовательский поиск метаданных сообщений с pre_get_posts мешает поиску WP Добавить число символов в пользовательский обмен Поиск База данных пользователей на meta_value & meta_key Нужна «страница с логотипом» перед страницей WordPress! Постоянное действие, которое перезаписывается после пользовательского типа сообщения с созданным slug Как включить фоновое изображение в мои таблицы стилей в плагине? Как я могу получить эскиз Featured Image, используя только Post_title? Фильтр term_link дает меньше атрибутов Количество комментариев комментариев, а не комментариев в сообщении изменить статус публикации, когда пользователи обновляют сообщения? Использовать только meta_values Невозможно добавить URL-адрес главной страницы в меню с помощью # Какие разрешения требуется wp-content / uploads?

Действие admin_post не используется, если доступ администратора недоступен пользователю

Прямо сейчас пользователи с определенной ролью будут перенаправлены с помощью hook в admin_init зависимости от следующих условных

 if (is_admin() && in_array($role_id, $user->roles)) 

Однако это не позволяет зарегистрированному пользователю с этой ролью использовать admin_post действия admin_post . Итак, есть ли способ перенаправить доступ или функции панели управления только администратором?

Я осмотрел лучший способ справиться с представлением формы WordPress и прочитать, что admin_post – это крючок для использования, но теперь кажется, что я не могу использовать это сейчас, если роль перенаправляется при доступе к wp_admin/admin-post.php ?

Solutions Collecting From Web of "Действие admin_post не используется, если доступ администратора недоступен пользователю"

Как насчет (1) current_screen ? action hook или условие для (2) get_current_screen() в вашем условном wp_redirect а затем вызов wp_redirect ?

Оба дают вам WP_Screen object который имеет несколько параметров, включая свойство $parent_base которое также может при необходимости включать более широкое включение.

Вот список свойств из кода:

$ action Любое действие, связанное с экраном. «добавить» для экранов * -add.php и * -new.php. Пусто.

$ base Основной тип экрана. Обычно это то же самое, что и $ id, но с любыми типами сообщений и таксономиями. Например, для $ id «edit-post» базой является «редактировать».

$ id Уникальный идентификатор экрана.

$ is_network Независимо от того, находится ли экран в сетевом админе.

$ is_user Независимо от того, находится ли экран в администраторе пользователя.

$ parent_base Основной родительский пункт меню. Это происходит из $ parent_file, удаляя строку запроса и любое расширение .php. $ parent_file значения 'edit.php? post_type = page' и 'edit.php? post_type = post' имеют $ parent_base 'edit'.

$ parent_file $ parent_file для экрана в системе меню администратора. Некоторыми значениями $ parent_file являются «edit.php? Post_type = page», «edit.php» и «options-general.php».

$ post_type Тип сообщения, связанный с экраном, если он есть. Экран 'edit.php? Post_type = page' имеет тип сообщения 'page'. Экран «edit-tags.php? Taxonomy = $ taxonomy & post_type = page» имеет тип сообщения «страница».

$ таксономия Таксономия, связанная с экраном, если таковая имеется. Экран «edit-tags.php? Taxonomy = category» имеет таксономию «категории».

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

 add_action( 'current_screen', 'my_function' ); function my_function( $current_screen ) { //true for anything other than page prefixed with edit.php if ( $current_screen->parent_base !== 'edit' ) { //get user role here, then: if ( in_array( $user->roles ) ) { //send to /wp-admin/ //note: for multisite I don't think admin_url() is the function you need wp_redirect( admin_url() ); } } } 

В вашем конкретном случае может быть более подходящий подход, но в целом я использовал что-то подобное открытому / закрытому доступу к экрану post_type или профиля пользователя, не затрагивая возможности входа пользователя в систему.