web-dev-qa-db-fra.com

Connectez-vous en utilisant le mot de passe des pages protégées

Est-ce que quelqu'un sait la logique sur la façon de faire:

J'ai une section de connexion avec un champ de mot de passe uniquement sur l'index, de sorte que l'utilisateur entre le mot de passe et le soumettre. Lors de la soumission, j'espérais que le mot de passe entré pouvait correspondre aux mots de passe des pages protégées existantes. Une fois la correspondance trouvée, l'utilisateur sera redirigé vers cette page protégée par un mot de passe si la connexion a réussi.

Pensez-vous que c'est possible ..? J'ai besoin d'espoir ici, merci!

1
hahahalif

Cette réponse suppose que vous parlez de la page de connexion normale, /wp-login.php, et que chaque utilisateur existe en tant qu'utilisateur dans la base de données WordPress. Après avoir relu votre question, je ne suis pas sûr que ce soit ce que vous voulez faire.

Il s’agit d’une première tentative, mais elle n’est pas terminée car il vous demande de nouveau votre mot de passe sur la publication protégée et il ne sait pas quand vous souhaitez visiter /wp-admin/ ou une autre zone restreinte.

add_filter( 'login_redirect', 'wpse6072_login_redirect', 10, 2 );
function wpse6072_login_redirect( $redirect_to, $requested_redirect )
{
    // You somehow need to figure out how to make a difference between an admin login and a regular login
    if ( /*! array_key_exists( 'redirect_to', $_REQUEST ) &&*/ array_key_exists( 'pwd', $_POST ) ) {
        global $wpdb;
        $post_id = $wpdb->get_var( $wpdb->prepare( "SELECT ID FROM {$wpdb->posts} WHERE post_password = %s", $_POST['pwd'] ) );
        $post_permalink = get_permalink( $post_id );
        if ( $post_permalink ) {
            // TODO: Set the post password in a way that satisfied WordPress
            $redirect_to = $post_permalink;
        }
    }
    return $redirect_to;
}
1
Jan Fabry