¿Alguna vez has necesitado restringir el acceso tu sitio web WordPress solo a visitantes autorizados? Ya sea para contenido sensible, en desarrollo o simplemente para una comunicación privada, proteger tu sitio con una contraseña puede ser una solución efectiva. En este artículo, te guiaré a través de cómo implementar una protección por contraseña en tu sitio WordPress para que solo los administradores puedan acceder sin restricciones.
Protección por Contraseña en WordPress
La protección por contraseña en WordPress permite restringir el acceso a tu sitio web mediante una contraseña, asegurando que solo los usuarios autorizados puedan ver el contenido protegido. Este método es útil cuando deseas mantener cierta información privada o exclusiva para un grupo selecto de personas.
Implementación del Código
El siguiente código tienes que agregarlo en el functions.php de tu tema hijo o utilizar un plugin como CODE SNIPPETS.
<?php
// Función para verificar si se debe mostrar la página de contraseña
function my_custom_password_protect() {
// Verificar si el usuario actual es un administrador
if ( current_user_can( 'administrator' ) ) {
return; // Si es administrador, no se aplica la protección por contraseña
}
// Si el usuario no ha ingresado la contraseña
if ( ! isset( $_COOKIE['wpse_logged'] ) || $_COOKIE['wpse_logged'] !== 'yes' ) {
// Si se ha enviado un formulario de contraseña
if ( isset( $_POST['site_password'] ) ) {
// Verificar la contraseña (puedes cambiar 'mypassword' por la contraseña que desees)
if ( $_POST['site_password'] === 'mypassword' ) {
// Establecer una cookie para recordar que el usuario ha ingresado la contraseña
setcookie( 'wpse_logged', 'yes', time() + 3600, '/' ); // La cookie expirará en 1 hora
} else {
// Contraseña incorrecta, mostrar mensaje de error
echo '<p style="text-align:center; color:red;">Contraseña incorrecta. Por favor, intenta de nuevo.</p>';
// Mostrar el formulario de contraseña
show_password_form();
exit;
}
} else {
// Si no se ha enviado un formulario de contraseña, mostrar el formulario
show_password_form();
exit;
}
}
}
// Función para mostrar el formulario de contraseña
function show_password_form() {
?>
<div class="password-form-container" style="display:flex; justify-content:center; align-items:center; height:100vh;">
<form method="post" style="max-width:400px; width:100%; padding:20px; background-color:#f9f9f9; border:1px solid #ddd; border-radius:5px;">
<h2 style="text-align:center;">Protegido por Contraseña</h2>
<p style="margin-bottom:20px; text-align:center;">Este sitio está protegido por contraseña. Por favor, ingresa la contraseña para acceder:</p>
<input type="password" name="site_password" style="width:100%; padding:10px; margin-bottom:10px; border:1px solid #ddd; border-radius:5px;">
<input type="submit" value="Enviar" style="width:100%; padding:10px; background-color:#2271B1; color:#fff; border:none; border-radius:5px; cursor:pointer;">
</form>
</div>
<?php
}
// Agregar el gancho para ejecutar la función de protección de contraseña
add_action( 'template_redirect', 'my_custom_password_protect' );
Lenguaje del código: HTML, XML (xml)
Explicación del Código
- La función
my_custom_password_protect()se encarga de verificar si se debe mostrar la página protegida por contraseña. Primero, comprueba si el usuario actual es un administrador. Si lo es, se omite la protección por contraseña. Luego, verifica si el usuario ha ingresado la contraseña. Si no la ha ingresado, muestra el formulario de contraseña. Si se envió un formulario de contraseña, verifica la contraseña ingresada. Si es correcta, establece una cookie para recordar que el usuario ha ingresado la contraseña. Si es incorrecta, muestra un mensaje de error y vuelve a mostrar el formulario de contraseña. - La función
show_password_form()muestra el formulario de contraseña en caso de que se requiera. - Por último, se añade un gancho (
add_action()) para ejecutar la función de protección de contraseña en el momento adecuado durante el proceso de carga de la página.
Conclusión
Implementar la protección por contraseña en tu sitio WordPress es una forma efectiva de restringir el acceso a contenido sensible o privado. Utilizando el código proporcionado, puedes garantizar que solo los usuarios autorizados puedan acceder al contenido protegido, proporcionando así una capa adicional de seguridad y privacidad a tu sitio web.
Nos vemos en el siguiente tutorial.
Un saludo




Deja tus opiniones o dudas en los comentarios.
# Lo bueno sería que cada persona tuviese un código de acceso, porque si no, el código único se iría propagando y todo el mundo podría acceder.
Gracias.
Hola, para hacerlo asi ya tienes que solicitar el email de cada visitante y enviarle un codigo unico que caduque. Lo estudiaré para crear un plugin. Saludos.