web-dev-qa-db-ja.com

マルチサイトサブサイトのユーザーのパスワードリセット

私はマルチサイトネットワークを持っています。自分のサブサイト内に留まりながら、ユーザーが自分のパスワードをリセットできるようにしたいです。たとえば、「パスワードを忘れましたか?」をクリックします。メインのサイト(domain.com/wp-login.php?action=lostpassword)に移動するのではなく、linkはそれらをサブドメイン(subdomain.domain.com/wp-login.php?action=lostpassword)内に保持します。

ユーザー名または電子メールを送信してパスワードを再設定した後、その電子メールにデフォルトの機能であるメインサイトではなくサブドメインへのリンクが含まれるようにします。

4.0アップデートの前に私はこのパッチを使うことができました https://core.trac.wordpress.org/ticket/21352 そして最終的にこのプラグイン https://Gist.github.com/strangerstudios/9487278 上記の正確な機能を取得する。すべてが素晴らしかったです。

しかし、更新後はもう機能していません。参照されているさまざまな場所で支援を求めても、問題の解決にはまだ役立っていません。誰でも手伝うことができますか?

5
Mike

これはうまくいきます!

「デフォルトでは、WordPress Multisiteはパスワードのリセットにメインブログを使用します。このプラグインを使用すると、ユーザーはリセットプロセス全体を通じて自分のブログを閲覧できます。」

<?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