Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Lassen Sie die Website-Anmeldung auch auf WordPress funktionieren

Sie können das WordPress-Login so einstellen, dass es eine benutzerdefinierte Tabelle verwendet, indem Sie die config.php bearbeiten und diese beiden Zeilen hinzufügen:

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

Wobei new_user_table die Tabelle Ihrer Website und new_usermeta_table die Bio-Tabelle Ihrer Website ist (falls Sie eine möchten)

Die benutzerdefinierte Tabelle muss die gleiche Struktur wie eine normale WordPress-Tabelle haben. Damit dies also mit der Tabelle Ihrer bestehenden Website funktioniert, müssen Sie einige Felder hinzufügen und sicherstellen, dass das Passwort auf die gleiche Weise gehasht wird.

So strukturieren Sie die Benutzertabelle

So strukturieren Sie die Benutzer-Metatabelle

Um die Passwörter bei der Registrierung korrekt zu hashen, binden Sie die Datei wp-includes/pluggable.php ein und verwenden Sie die Funktion
<?php $hash = wp_hash_password( $password ) ?>

Für vorhandene Passwörter, die nicht korrekt gehasht sind, müssen Sie eine E-Mail-Passwortzurücksetzung einrichten.

Oder. Wenn Sie Ihre aktuellen Passwort-Hashes beibehalten möchten (aus Sicherheitsgründen nicht empfohlen, aber machbar), können Sie die WordPress-Hashing-Funktion ändern. In wp-includes/pluggable.php ändern:

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

Und ändern:

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);
            }
}

Einzelheiten zu wp_check_password finden Sie hier

Alternativ

Sie können das Herumspielen mit Ihrer benutzerdefinierten Benutzertabelle überspringen und den WordPress-Login auf den Rest Ihrer Website anwenden lassen. Verwenden Sie dazu einfach den folgenden Code:

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

Stellen Sie sicher, dass „wp-config.php“ der vollständige relative Pfad zu der Datei ist, und platzieren Sie diesen Code dann auf jeder Seite Ihrer Nicht-Wordpress-Site. Ersetzen Sie das Echo durch den Inhalt, der für einen angemeldeten Benutzer angezeigt werden soll, und ersetzen Sie den Header durch den Inhalt, der für einen Gast angezeigt werden soll. Wenn der Inhalt einfaches HTML ist, können Sie Folgendes tun:

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