Переадресовывать зарегистрированных пользователей, если они находятся на определенной странице

Я пытаюсь запретить пользователю доступ, кроме администратора, на страницу регистрации и сбросить страницу пароля, если они уже вошли в систему. У меня есть следующее:

function redirect_loggedin_users() { // Maybe use is_user_logged_in() instead? if (!current_user_can('manage_options') && is_page(array(2090, 2092))) { wp_redirect(home_url()); exit(); } } add_action('init', 'redirect_loggedin_users'); 

Я тестировал его, и он не работает. Может кто-нибудь, пожалуйста, помогите мне? Благодарю.

Solutions Collecting From Web of "Переадресовывать зарегистрированных пользователей, если они находятся на определенной странице"

Одна из проблем заключается в том, что вы заходите слишком рано. Ссылка на ссылку на API Hooks . Условия шаблона, такие как is_page() , доступны только после того, как запрос был настроен и проанализирован. Самое раннее действие, которое вы обычно можете безопасно полагаться на условия запроса, – pre_get_posts . Вы подключаетесь к init , который срабатывает намного раньше:

  • muplugins_loaded После того, как загружаются плагины с обязательным использованием
  • registered_taxonomy Для категории, post_tag и т. д.
  • registered_post_type Для сообщений, страниц и т. д.
  • plugins_loaded После того, как загружены активные плагины и подключаемые функции
  • sanitize_comment_cookies
  • setup_theme
  • load_textdomain Для домена по умолчанию
  • after_setup_theme Обычно используется для инициализации настроек / параметров темы.
  • auth_cookie_malformed
  • auth_cookie_valid
  • set_current_user
  • init Обычно используется плагинами для инициализации. К этому времени текущий пользователь уже аутентифицирован.
  • widgets_init Используется для регистрации боковых панелей. Это срабатывает при инициализации с приоритетом 1.
  • register_sidebar Для каждой области боковой панели и нижнего колонтитула
  • wp_register_sidebar_widget Для каждого виджета
  • wp_default_scripts (ref array)
  • wp_default_styles (ref array)
  • admin_bar_init
  • add_admin_bar_menus
  • wp_loaded После того, как WordPress полностью загружен
  • parse_request Позволяет манипулировать обработкой запросов HTTP (ref array)
  • send_headers Позволяет настраивать заголовки HTTP (ref array)
  • parse_query (ref array)
  • pre_get_posts объект query-variables перед выполнением запроса. (ref array)
  • posts_selection
  • wp После создания объекта WP (ref array)
  • template_redirect
  • get_header
  • wp_enqueue_scripts

Учитывая природу того, что вы пытаетесь сделать, я бы рекомендовал подключиться к template_redirect .