web-dev-qa-db-fra.com

Réinitialisation du mot de passe pour les utilisateurs d'un sous-site multisite

J'ai un réseau multisite. Je souhaite que mes utilisateurs puissent réinitialiser leurs mots de passe tout en restant dans leurs sous-sites. Donc, par exemple, en cliquant sur "perdu votre mot de passe?" le lien les garde dans leur sous-domaine (sous-domaine.domaine.com/wp-login.php?action=lostpassword) au lieu de les amener sur le site principal (domain.com/wp-login.php?action=lostpassword).

Après avoir envoyé le nom d'utilisateur ou l'e-mail pour réinitialiser le mot de passe, j'aimerais que cet e-mail contienne des liens vers leur sous-domaine et non vers le site principal, contrairement à la fonctionnalité par défaut.

Avant la mise à jour 4.0, je pouvais utiliser ce correctif https://core.trac.wordpress.org/ticket/21352 et finalement ce plugin https://Gist.github.com/strangerstudios/9487278. pour obtenir la fonctionnalité exacte décrite ci-dessus. Tout était super.

Cependant, après la mise à jour, cela ne fonctionne plus. Demander de l'aide aux différents endroits cités n'a toujours pas aidé à résoudre le problème. Est-ce que quelqu'un peut aider?

5
Mike

Ça marche bien!

"Par défaut, WordPress Multisite utilise le blog principal pour les réinitialisations de mot de passe. Ce plugin permet aux utilisateurs de rester dans leur blog pendant tout le processus de réinitialisation."

<?php
/**
 * Plugin Name: Multisite: Passwort Reset on Local Blog
 * Plugin URI:  https://Gist.github.com/eteubert/293e07a49f56f300ddbb
 * Description: By default, WordPress Multisite uses the main blog for passwort resets. This plugin enables users to stay in their blog during the whole reset process.
 * Version:     1.0.0
 * Author:      Eric Teubert
 * Author URI:  http://ericteubert.de
 * License:     MIT
 */
// fixes "Lost Password?" URLs on login page
add_filter("lostpassword_url", function ($url, $redirect) { 

    $args = array( 'action' => 'lostpassword' );

    if ( !empty($redirect) )
        $args['redirect_to'] = $redirect;
    return add_query_arg( $args, site_url('wp-login.php') );
}, 10, 2);
// fixes other password reset related urls
add_filter( 'network_site_url', function($url, $path, $scheme) {

    if (stripos($url, "action=lostpassword") !== false)
        return site_url('wp-login.php?action=lostpassword', $scheme);

    if (stripos($url, "action=resetpass") !== false)
        return site_url('wp-login.php?action=resetpass', $scheme);

    return $url;
}, 10, 3 );
// fixes URLs in email that goes out.
add_filter("retrieve_password_message", function ($message, $key) {
    return str_replace(get_site_url(1), get_site_url(), $message);
}, 10, 2);
// fixes email title
add_filter("retrieve_password_title", function($title) {
    return "[" . wp_specialchars_decode(get_option('blogname'), ENT_QUOTES) . "] Password Reset";
});
5
KLM