Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Faça o login do site funcionar também no WordPress


Você pode definir o login do wordpress para usar uma tabela personalizada editando o config.php e adicionando estas duas linhas:
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

Onde new_user_table é a tabela do seu site e new_usermeta_table é a tabela bio do seu site (se você quiser)

A tabela personalizada precisa ter a mesma estrutura de uma tabela normal do wordpress. Portanto, para que isso funcione com a tabela do seu site existente, você precisará adicionar alguns campos e garantir que a senha seja hash da mesma maneira.

Veja como estruturar a tabela de usuários

Veja como estruturar a metatabela do usuário

Para fazer o hash das senhas corretamente no registro, inclua o arquivo wp-includes/pluggable.php e use a função
<?php $hash = wp_hash_password( $password ) ?>

Para senhas existentes que não tenham o hash correto, você precisará configurar uma redefinição de senha de e-mail.

Ou. se você quiser manter seus hashes de senha atuais (não recomendado por motivos de segurança, mas possível), você pode alterar a função de hash do wordpress. Em wp-includes/pluggable.php altere:
if ( !function_exists('wp_hash_password') ){
    function wp_hash_password($password) {
                //apply your own hashing structure here
            return $password;
    }
}

E mude:
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);
            }
}

Para obter detalhes sobre wp_check_password Acesse aqui

Alternativamente

Você pode pular mexer com sua tabela de usuário personalizada e fazer com que o login do wordpress se aplique ao resto do seu site. Para fazer isso, basta usar o seguinte código:
<?php
include 'wp-config.php';
if ( is_user_logged_in() ) {
    echo 'Welcome, registered user!';
} else {
    header( 'Location: http://google.com' ) ;
};
?>

Certifique-se de que 'wp-config.php' seja o caminho relativo completo para o arquivo, então coloque este código em todas as páginas do seu site não wordpress. substitua o eco pelo conteúdo a ser exibido para um usuário conectado e substitua o cabeçalho pelo que for exibido para um convidado. Se o conteúdo for html simples, você pode fazer o seguinte:
<?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
};
?>