web-dev-qa-db-fra.com

se connecter à wordpress avec Get variables au lieu de Post

J'utilise swish-e pour indexer le site et les documents de mon entreprise. Le problème est que je dois me connecter à wordpress via get variables. La connexion Wordpress utilise post variable, mais je dois me connecter avec des variables GET

http://mysite.com/wp-login.php?log=username&pwd=password

Il y a un moyen facile de le faire? Cela ne me dérange pas de changer les fichiers de base, s'il n'y a pas d'autre option.

J'ai jeté un coup d'oeil à wp-login.php mais je n'ai pas la moindre idée de la façon de le faire.

Cordialement

2
chifliiiii

L'utilisation de variables GET pour les noms d'utilisateur et les mots de passe n'est jamais une bonne idée. Quoi qu'il en soit, quelque chose comme ce qui suit devrait fonctionner

if(isset($_GET['log']) && isset($_GET['pwd'])){
    $creds = array();
    $creds['user_login'] = $_GET['log'];
    $creds['user_login'] = $_GET['pwd'];
    $creds['remember'] = true; //Do you want the log-in details to be remembered?

    $user = wp_signon( $creds, false );
    if ( is_wp_error($user) )
       echo $user->get_error_message(); //Display error message if log-in fails
}

Vous pouvez l'insérer dans un modèle, puis créer une page à l'aide de ce modèle pour créer une page de connexion alternative. Dans ce cas, vous voudrez peut-être accéder à: http: // [url de la page]? Log = nom d'utilisateur & pwd = mot de passe

Pour obtenir http://mysite.com/wp-login.php?log=username&pwd=password , vous devez placer le code ci-dessus dans le fichier core wp-login.php. Plutôt que d'adapter le code (qui sera écrasé lors de la prochaine mise à jour de WordPress), je vous recommande d'utiliser un crochet. Comme, alors (mettez ceci dans votre functions.php ou un plug-in):

add_action('init', 'GET_login');
function GET_login() {
    //Check that we are on the log-in page
    if(in_array($GLOBALS['pagenow'], array('wp-login.php'))):

    //Check that log and pwd are set
        if(isset($_GET['log']) && isset($_GET['pwd'])):
            $creds = array();
            $creds['user_login'] = $_GET['log'];
            $creds['user_password'] = $_GET['pwd'];
            $creds['remember'] = true; //Do you want the log-in details to be remembered?

            //Where do we go after log-in?
            $redirect_to = admin_url('profile.php');

            //Try logging in
            $user = wp_signon( $creds, false );

            if ( is_wp_error($user) ){
                //Log-in failed
            }else{
                //Logged in, now redirect
                $redirect_to = admin_url('profile.php');
                wp_safe_redirect($redirect_to);
            exit();
            }
        endif;
    endif;
    //If we are not on the log-in page or credentials are not set, carry on as normal
}

Explication:Notre fonction est exécutée à l'aide du crochet init. Il vérifie d'abord que nous sommes sur la page ./wp-login.php, puis que les variables log et pwd sont définies. Sinon, nous continuons comme d'habitude. Si tel est le cas, nous tentons une connexion en utilisant wp_signon. Si nous réussissons, nous sommes redirigés (où que vous soyez), sinon en cas d'échec, nous faisons quelque chose (des erreurs d'affichage, peut-être?).

J'espère que cela pourra aider

4
Stephen Harris