Mysql
 sql >> Base de données >  >> RDS >> Mysql

Faites en sorte que la connexion au site Web fonctionne également sur WordPress

Vous pouvez définir la connexion wordpress pour utiliser un tableau personnalisé en modifiant le fichier config.php et en ajoutant ces deux lignes :

define('CUSTOM_USER_TABLE','new_user_table'); //login, pass, email etc
define('CUSTOM_USER_META_TABLE', 'new_usermeta_table'); //optional bio, don't have to include this line

Où new_user_table est la table de votre site Web et new_usermeta_table est la table bio de votre site Web (si vous en voulez une)

Le tableau personnalisé doit avoir la même structure qu'un tableau wordpress normal. Donc, pour que cela fonctionne avec le tableau de votre site Web existant, vous devrez ajouter des champs et vous assurer que le mot de passe est haché de la même manière.

Voici comment structurer la table des utilisateurs

Voici comment structurer la méta-table utilisateur

Pour hacher correctement les mots de passe lors de l'inscription, incluez le fichier wp-includes/pluggable.php et utilisez la fonction
<?php $hash = wp_hash_password( $password ) ?>

Pour les mots de passe existants qui ne sont pas hachés correctement, vous devrez configurer une réinitialisation du mot de passe par e-mail.

Ou alors. si vous souhaitez conserver vos hachages de mot de passe actuels (non recommandé pour des raisons de sécurité mais faisable), vous pouvez modifier la fonction de hachage wordpress. Dans wp-includes/pluggable.php changez :

if ( !function_exists('wp_hash_password') ){
    function wp_hash_password($password) {
                //apply your own hashing structure here
            return $password;
    }
}

Et changez :

if ( !function_exists('wp_check_password') ){
    function wp_check_password($password, $hash, $user_id = '') {
            //check for your hash match
            return apply_filters('check_password', $check, $password, $hash, $user_id);
            }
}

Pour plus de détails sur wp_check_password Allez ici

Alternativement

Vous pouvez éviter de jouer avec votre table d'utilisateurs personnalisée et faire en sorte que la connexion wordpress s'applique au reste de votre site. Pour ce faire, utilisez simplement le code suivant :

<?php
include 'wp-config.php';
if ( is_user_logged_in() ) {
    echo 'Welcome, registered user!';
} else {
    header( 'Location: http://google.com' ) ;
};
?>

Assurez-vous que 'wp-config.php' est le chemin relatif complet vers le fichier, puis placez ce code dans chaque page de votre site non wordpress. remplacez l'écho par le contenu à afficher pour un utilisateur connecté et remplacez l'en-tête par ce qui doit être affiché pour un invité. Si le contenu est en HTML simple, vous pouvez procéder comme suit :

<?php
include 'wp-config.php';
if ( is_user_logged_in() ) {
?>

<html>
<head></head>
<body><p>Welcome Registered user</p></body>
</html>

<?php
} else {
?>

<html>
<head></head>
<body><p>Please log in</p></body>
</html>

<?php
};
?>