web-dev-qa-db-fra.com

Rediriger les utilisateurs connectés s'ils se trouvent sur une page spécifique

J'essaie d'empêcher un utilisateur, outre l'administrateur, d'accéder à la page d'inscription et de réinitialiser la page de mot de passe s'ils sont déjà connectés. J'ai les éléments suivants:

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');

Je l'ai testé et ça ne marche pas. Quelqu'un peut-il m'aider s'il vous plaît? Merci.

3
rolu

Un problème est que vous vous connectez trop tôt. Référencez la référence d'action de l'API de crochets . Les conditions de modèle, telles que is_page(), ne sont disponibles qu'une fois la requête configurée et analysée. La première action que vous pouvez généralement utiliser en toute sécurité sur les conditions de requête est pre_get_posts. Vous êtes accroché à init qui se déclenche beaucoup plus tôt:

  • muplugins_loaded Après le chargement des plugins à utiliser
  • registered_taxonomy Pour la catégorie, post_tag, etc.
  • registered_post_type Pour post, page, etc.
  • plugins_loaded Après le chargement des plugins actifs et des fonctions pluggables
  • sanitize_comment_cookies
  • setup_theme
  • load_textdomain Pour le domaine par défaut
  • after_setup_theme Généralement utilisé pour initialiser les paramètres/options du thème.
  • auth_cookie_malformed
  • auth_cookie_valid
  • set_current_user
  • init Typiquement utilisé par les plugins pour initialiser. L'utilisateur actuel est déjà authentifié à cette heure.
  • widgets_init Utilisé pour enregistrer les barres latérales. Ceci est déclenché sur 'init', avec une priorité de 1.
  • register_sidebar Pour chaque barre latérale et chaque pied de page
  • wp_register_sidebar_widget Pour chaque widget
  • wp_default_scripts (ref array)
  • wp_default_styles (ref array)
  • admin_bar_init
  • add_admin_bar_menus
  • wp_loaded après le chargement complet de WordPress
  • parse_request Permet de manipuler le traitement des demandes HTTP (tableau de références)
  • send_headers Permet la personnalisation des en-têtes HTTP (ref array)
  • parse_query (tableau de référence)
  • pre_get_posts Expose l'objet requête-variables avant l'exécution d'une requête. (ref array)
  • posts_selection
  • wp après que l'objet WP soit configuré (tableau de référence)
  • template_redirect
  • get_header
  • wp_enqueue_scripts

Étant donné la nature de ce que vous essayez de faire, je vous recommanderais de vous connecter à template_redirect.

5
Chip Bennett