Mysql
 sql >> Database >  >> RDS >> Mysql

Fai in modo che l'accesso al sito web funzioni anche su WordPress

Puoi impostare il login wordpress per utilizzare una tabella personalizzata modificando il file config.php e aggiungendo queste due righe:

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

Dove new_user_table è la tabella del tuo sito web e new_usermeta_table è la tabella bio del tuo sito web (se ne vuoi una)

La tabella personalizzata deve avere la stessa struttura di una normale tabella wordpress. Quindi, per farlo funzionare con la tabella del tuo sito web esistente, dovrai aggiungere alcuni campi e assicurarti che la password sia sottoposta a hash allo stesso modo.

Ecco come strutturare la tabella utente

Ecco come strutturare la meta tabella utente

Per eseguire correttamente l'hashing delle password al momento della registrazione, includi il file wp-includes/pluggable.php e usa la funzione
<?php $hash = wp_hash_password( $password ) ?>

Per le password esistenti che non sono state sottoposte a hash correttamente, dovrai impostare una reimpostazione della password e-mail.

O. se desideri conservare gli hash della password corrente (non consigliato per motivi di sicurezza ma fattibile) puoi modificare la funzione di hashing di wordpress. In wp-includes/pluggable.php cambia:

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

E cambia:

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

Per i dettagli su wp_check_password Vai qui

In alternativa

Puoi saltare i pasticci con la tua tabella utente personalizzata e fare in modo che l'accesso wordpress si applichi al resto del tuo sito. Per fare ciò, usa semplicemente il seguente codice:

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

Assicurati che 'wp-config.php' sia il percorso relativo completo del file, quindi inserisci questo codice in ogni pagina del tuo sito non wordpress. sostituire l'eco con qualsiasi contenuto da visualizzare per un utente connesso e sostituire l'intestazione con qualsiasi contenuto da visualizzare per un ospite. Se il contenuto è semplice html puoi fare quanto segue:

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