sql >> Base de Datos >  >> RDS >> Mysql

Haga que el inicio de sesión del sitio web también funcione en WordPress

Puede configurar el inicio de sesión de wordpress para usar una tabla personalizada editando config.php y agregando estas dos líneas:

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

Donde new_user_table es la tabla de su sitio web y new_usermeta_table es la tabla de biografía de su sitio web (si desea una)

La tabla personalizada debe tener la misma estructura que una tabla de wordpress normal. Por lo tanto, para que esto funcione con la tabla de su sitio web existente, tendrá que agregar algunos campos y asegurarse de que la contraseña esté codificada de la misma manera.

Aquí se explica cómo estructurar la tabla de usuarios

Aquí se explica cómo estructurar la metatabla de usuarios

Para codificar correctamente las contraseñas al registrarse, incluya el archivo wp-includes/pluggable.php y use la función
<?php $hash = wp_hash_password( $password ) ?>

Para las contraseñas existentes que no están codificadas correctamente, deberá configurar un restablecimiento de contraseña de correo electrónico.

O. Si desea conservar los hashes de su contraseña actual (no se recomienda por razones de seguridad, pero es factible), puede cambiar la función de hashing de wordpress. En wp-includes/pluggable.php cambie:

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

Y cambiar:

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 obtener detalles sobre wp_check_password Vaya aquí

Alternativamente

Puede evitar perder el tiempo con su tabla de usuarios personalizada y hacer que el inicio de sesión de wordpress se aplique al resto de su sitio. Para hacer esto, simplemente use el siguiente código:

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

Asegúrese de que 'wp-config.php' sea la ruta relativa completa al archivo, luego coloque este código en cada página de su sitio que no sea de wordpress. reemplace el eco con cualquier contenido que se muestre para un usuario conectado y reemplace el encabezado con lo que se muestre para un invitado. Si el contenido es html simple, puede hacer lo siguiente:

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