Je crée un thème WordPress personnalisé) basé sur un site existant.
Je souhaite utiliser un autre tableau de bord que j'ai créé.
Comment puis-je diriger l'utilisateur vers 'news.php
'après la connexion au lieu de' /wp-admin/
'?
-
EDIT: Ayez un plug-in fonctionnel pour cela, mais la prime reste disponible pour tous ceux qui peuvent trouver un moyen manuel de le faire via functions.php, car ce serait plus sûr que d'utiliser un plug-in tiers .
Cela devrait résoudre votre problème. Adapté d'une réponse trouvée ici.
function admin_default_page() {
return '/new-dashboard-url';
}
add_filter('login_redirect', 'admin_default_page');
La réponse acceptée est très fausse. Il ne faut jamais modifier le WordPress Core. Non seulement les modifications seront perdues lors d’une mise à jour donnée, mais certaines modifications que vous ferez sur un coup de tête pourront compromettre d’autres fonctionnalités ou même compromettre la sécurité de votre site.
Crochets et filtres d'action sont inclus dans le noyau pour permettre la modification de la fonctionnalité sans modifier le code.
Un exemple d'utilisation de login_redirect
le filtre pour rediriger certains utilisateurs peut être trouvé ici et est une solution beaucoup plus robuste à votre problème.
Pour votre problème spécifique, vous voulez faire ceci:
function login_redirect( $redirect_to, $request, $user ){
return home_url('news.php');
}
add_filter( 'login_redirect', 'login_redirect', 10, 3 );
Cela peut aider. redirection de connexion de Peter
Redirige les utilisateurs vers différents emplacements après la connexion et la déconnexion.
Définissez un ensemble de règles de redirection pour des utilisateurs spécifiques, des utilisateurs dotés de rôles spécifiques, des utilisateurs dotés de fonctionnalités spécifiques et une règle générale pour tous les autres utilisateurs. Définissez également une URL de redirection pour la post-inscription. Tout cela est géré dans Paramètres> Redirections de connexion/déconnexion.
Vous pouvez utiliser la syntaxe
[variable]username[/variable]
_ dans vos URL afin que le système crée une URL dynamique à chaque connexion, en remplaçant ce texte par le nom d'utilisateur de l'utilisateur. En plus du nom d'utilisateur, il y a "userslug", "homeurl", "siteurl", "postid-23", "http_referer" et vous pouvez également ajouter votre propre URL personnalisée "variables" ...
add_action('wp_head','redirect_admin');
function redirect_admin(){
if(is_admin()){
wp_redirect(WP_HOME.'/news.php');
die; // You have to die here
}
}
Ou si vous voulez seulement rediriger d'autres utilisateurs:
add_action('wp_head','redirect_admin');
function redirect_admin(){
if(is_admin()&&!current_user_can('level_10')){
wp_redirect(WP_HOME.'/news.php');
die; // You have to die here
}
}
Le plugin Theme My Login peut vous aider. Il vous permet de rediriger les utilisateurs de rôles spécifiques vers des pages spécifiques.
S'il vous plaît essayez ceci, cela fonctionne pour toute redirection sur WordPress
add_filter('woocommerce_login_redirect', 'wc_login_redirect');
function wc_login_redirect( $redirect_to ) {
$redirect_to = 'PUT HERE URL OF THE PAGE';
return $redirect_to;
}
Si vous avez php 5.3+, vous pouvez utiliser une fonction anonyme comme ceci:
add_filter( 'login_redirect', function() { return site_url('news'); } );
La réponse acceptée n'est clairement pas une bonne réponse! Cela pourrait résoudre votre problème pendant un moment, mais que se passera-t-il la prochaine fois que vous mettrez à jour votre WordPress?)? Vos fichiers de base risquent d’être remplacés et vous perdrez toutes vos modifications.
Comme déjà indiqué par d'autres (réponses de Dan et Travis), la bonne réponse consiste à utiliser le login_redirect
filtre.
Vous pouvez également utiliser le lien personnalisé en tant que:
https://example.com/wp-login.php?redirect_to=https://example.com/news.php
Pour rediriger globalement après une connexion réussie, recherchez ce code dans wp-login.php, sous la section.
<form name="loginform" id="loginform" action="<?php echo esc_url( site_url( 'wp-login.php', 'login_post' ) ); ?>" method="post">
<input type="hidden" name="redirect_to" value="<?php echo esc_attr($redirect_to); ?>" />
et remplacez <?php echo esc_attr($redirect_to); ?>
par votre URL à rediriger. L'URL doit commencer par http: // et se terminer par une autre redirection de page judicieuse vers l'emplacement par défaut.
Faites la même chose sous forme de redirection après inscription dans le même fichier mais sous la section <form name="registerform">
.
// add the code to your theme function.php
//for logout redirection
add_action('wp_logout','auto_redirect_after_logout');
function auto_redirect_after_logout(){
wp_redirect( home_url() );
exit();
}
//for login redirection
add_action('wp_login','auto_redirect_after_login');
function auto_redirect_after_login(){
wp_redirect( home_url() );
exit();
`enter code here`}
// Used theme's functions.php
add_action('login_form', 'redirect_after_login');
function redirect_after_login()
{
global $redirect_to;
if (!isset($_GET['redirect_to']))
{
$redirect_to = get_option('sample-page');
// sample-page = your page name after site_url
} }