Oui c'est possible. Vous devez créer trois filtres pour cela.
Trucs administratifs dans une classe
class WPSE29338_Admin {
public static function setup() {
add_filter('login_url', array(__CLASS__, 'modifyLoginURL'), 10, 2);
add_filter('lostpassword_url', array(__CLASS__, 'modifyLostPasswordURL'), 10, 2);
add_filter('register', array(__CLASS__, 'modifyRegisterURL'));
}
public static function modifyLoginURL($loginUrl, $redirect = '') {
$loginUrl = site_url('login'); // Link to login URL
if(!empty($redirect)) {
$loginUrl = add_query_arg('redirect_to', urlencode($redirect), $loginUrl);
}
return $loginUrl;
}
public static function modifyLostPasswordURL($lostpwUrl, $redirect = '') {
$lostpwUrl = wp_login_url() . '#lostpassword'; // Link to lostpassword URL
if(!empty($redirect)) {
$lostpwUrl = add_query_arg('redirect_to', urlencode($redirect), $lostpwUrl);
}
return $lostpwUrl;
}
public static function modifyRegisterURL($registerUrl) {
if(!is_user_logged_in()) {
if (get_option('users_can_register')) {
$registerUrl = '<a href="' . wp_login_url() . '#register" class="btn">' . __('Register') . '</a>'; // Link to register URL
} else {
$registerUrl = '';
}
}
return $registerUrl;
}
}
Nous devons d'abord filtrer la sortie de la fonction wp_login_url()
utilisée par wp_login_form()
l' action
attribut forms .
Regardez la méthode modifyLoginUrl()
. Ici, nous stockons l'URL de la page login
à l'intérieur de la variable $loginUrl
. Cette page doit exister dans WordPress, alors créez-la d'abord.
Ensuite, nous avons besoin d'un filtre pour la fonction wp_lostpassword_url()
et wp_register()
. C'est fondamentalement la même chose. L'URL du site est stockée à l'intérieur de la variable $lostpwUrl
et $registerUrl
.
Enfin et surtout, vous devez appeler la classe sur le bon crochet d'action. Pour les thèmes, cela devrait être after_setup_theme
et pour les plugins que vous pouvez utiliser plugins_loaded
.
Themes / functions.php
add_action('after_setup_theme', 'wpse29338_admin_init');
function wpse29338_admin_init() {
WPSE29338_Admin::setup();
}
Plugins
add_action('plugins_loaded', 'wpse29338_admin_init');
function wpse29338_admin_init() {
WPSE29338_Admin::setup();
}
$loginUrl = site_url('login'); // Link to login URL
. Modifiez simplement 'login' pour correspondre au slug de la page de connexion que vous souhaitez utiliser. À moins que Rofflox n'ait fait une erreur de syntaxe que je ne vois pas, cela semble fonctionner parfaitement.