web-dev-qa-db-ja.com

「パスワード紛失」ページで404がトリガーされる

WizをテーマにしたWP 4.5.3と、他の2つのプラグイン(Wizにバンドルされているものを除く)があります。WP Customer AreaとWP-Members。

https://www.ukulele.it/wp-login.php

「パスワードを忘れました」をクリックすると404が表示されます。問題はGoogleで確認しましたが、結果はプラグインの競合を示唆しています。私は両方のユーザー管理関連のプラグインを無効にしようとしましたが、404エラーはまだそこにあります。

[パスワードの変更]ページをWPデフォルトのページにリセットするにはどうすればよいですか。

Birgireの答えが出た後に編集する:

応答可能なプラグインを見つけるための推奨コードを追加しました。

add_action( 'login_footer', function() use ( &$wp_filter )
{
    if( isset( $wp_filter['lostpassword_url'] ) )
        printf( '<!--%s-->', print_r( $wp_filter['lostpassword_url'], 1 ) );
});

ログインページのソースで今私は得る:

<!--Array
(
    [10] => Array
        (
            [wc_lostpassword_url] => Array
                (
                    [function] => wc_lostpassword_url
                    [accepted_args] => 1
                )
        )
)-->

つまり、私の場合、WooCommerceは責任を負うことになっています(または、WooCommerceの設定が壊れているために私自身が)。

1
Lucio Crusca

あなたのテーマやプラグインはおそらくあなたのwp-login.phpの "Lost password"リンクをlostpassword_urlフィルタを通して修正しています。

[パスワードの変更]ページをWPデフォルトのページにリセットするにはどうすればよいですか。

これらのフィルタコールバックを削除する必要があります。

これは(未検証の)提案です。

add_filter( 'lostpassword_url', function( $url, $redirect )
{
    remove_all_filters( 'lostpassword_url' );

    return wp_lostpassword_url( $redirect );
}, PHP_INT_MAX, 2 );

そうでなければ、インストールでadd_filter( 'lostpassword_url'を検索するか、$wp_filterグローバル配列を覗くことができます。これが例です:

add_action( 'login_footer', function() use ( &$wp_filter )
{
    if( isset( $wp_filter['lostpassword_url'] ) )
        printf( '<!--%s-->', print_r( $wp_filter['lostpassword_url'], 1 ) );
});

ログインページにHTMLコメントとして情報が表示されます。

3
birgire