A veces queremos proteger una página con contraseña en WordPress (sirve igual para una entrada, claro, o incluso para un producto de WooCommerce), de forma que sólo quien conozca la contraseña pueda ver el contenido. Eso es algo muy sencillo de hacer y para lo que no necesitamos ningún plugin, ya que es una característica nativa de WordPress.
Como es tan sencillo, vamos a verlo en un vídeo, donde además veremos el funcionamiento de un plugin que extiende esta capacidad de WordPress y permite crear una página de login que dirija al usuario a una u otra página según la contraseña que introduzca. Muy útil para mostrar distintos contenidos a distintos tipos de usuarios si no hay necesidad de crear una intranet completa.
Por último también veremos cómo cambiar el texto Este contenido está protegido por contraseña. Para verlo introduce tu contraseña a continuación que aparece por defecto en las páginas protegidas por contraseña de WordPress, tanto por código como mediante el uso de un plugin.
Tabla de contenidos
Vídeo: Proteger página con contraseña en WordPress
Cambiar el texto de la página protegida por contraseña en WordPress
Por defecto, el texto que aparece en una página protegida por contraseña es el siguiente:
Este contenido está protegido por contraseña. Para verlo introduce tu contraseña a continuación.
No existe una opción para cambiarlo, pero sí puede hacerse gracias a los hooks de WordPress, utilizando una sencilla función:
add_filter ('the_password_form', function ($texto) {
$texto = str_replace ('Este contenido está protegido por contraseña. Para verlo introduce tu contraseña a continuación:
', 'AQUÍ VA NUESTRO TEXTO PERSONALIZADO
', $texto);
return $texto;
});
Puedes incluir esta función en tu functions.php, aunque ya sabes que hay otras formas más recomendadas de incluir tus funciones personalizadas en WordPress. Recuerda en cualquier caso hacer siempre antes una copia de seguridad. La incomodidad es que tendrás que editar la función cada vez que quieras cambiar ese texto.
Plugin para cambiar el texto en las páginas protegidas por contraseña
Siempre es más sencillo y cómodo, claro está, utilizar un plugin. En caso de que lo prefieras así, tienes disponible este plugin hecho por mí precisamente para esto.
Al activarlo tienes una opción en Ajustes > Texto para contraseña que te permitirá cambiar el texto por defecto, incluyendo el uso de etiquetas HTML y de shortcodes. Dejando la opción en blanco se vuelve al texto por defecto de WordPress.
El plugin sólo sirve (de momento) para WordPress en español, pero si lo necesitas para otro idioma ponte en contacto conmigo y lo adaptaré. Puedes ver un vídeo con su funcionamiento (muy sencillo) aquí.
Incluye mi soporte personal respecto a la instalación y funcionamiento o las posibles incidencias que pudieras tener con él, y su precio es de sólo 3,99€
Descarga con seis meses de soporte - 3,99€
Descarga con soporte continuado - 3,99€/año
Distinto contenido en función de la contraseña utilizada: Smart Passworded Pages
Como has visto en el vídeo, con el plugin gratuito Smart Passworded Pages puedes crear un formulario de login que lleve al usuario a una u otra página en función de la contraseña utilizada (por supuesto, sólo con la contraseña pueden ver el contenido de esas páginas).
En la práctica, es lo mismo que mostrar un contenido u otro al usuario en función de la contraseña que tenga, pudiendo así dar a distintos usuarios acceso a distintos contenidos desde un formulario de login centralizado.
Basta con publicar la página en la que queramos que esté el formulario de login con el siguiente shortcode (esta página no debe estar protegida por contraseña):
[smartpwpages label="Texto del botón"]
Y luego el resto de páginas, cada una con su contraseña distinta, como subpáginas de ésta. Creo que en el vídeo se ve bastante mejor de lo que lo pueda explicar aquí, así que a él te remito. Es muy sencillo.
Javier García dice
Hola! Hay alguna forma de modificar la página donde se pide la contraseña?
Me refiero a la posibilidad de poner el mismo fondo y cabecera que el resto de páginas.
Gracias!
Enrique J. Ros dice
Hola Javier. Sí, en realidad mediante CSS puedes hacer cualquier cambio que necesites.
Un saludo.
Fernando dice
Hola Enrique muy interesante tu blog al igual que tu vídeo, mi pregunta es la siguiente¿Se puede proteger toda la web y ingresar con una sola contraseña?
Enrique J. Ros dice
Hola Fernando. Puedes cerrar la web completa con el plugin Registered Users Only, permitiendo sólo entrar a usuarios registrados.
Un saludo.
ivan dice
Hola, estuve mirando este vídeo el cual tu creas una pagina de login y yo actualmente estoy realizando un proyecto escolar en el cual me piden que yo conecte una base de datos a una pagina de wordpress y la verdad nunca había manejado este gestor de contenido, bueno al punto estoy armando un sistema para un colegio en el cual necesito que cuando entren a la pagina según el usuario y contraseña me muestre algún contenido en especifico obvio los usuarios y contraseñas ya las tengo en la base de datos aun que aun no tengo la mas remota idea de como hacer para lograr esto, espero me pudiera ayudar muchas gracias estoy trabajando mi base de datos con mysql, muchas gracias por su atención.
Enrique dice
Hola Iván
Si tienes que validarlos contra una base de datos no es tan sencillo, en ese caso habrá que hacer un plugin personalizado que valide los datos utilizando $wpdb.
De todos modos, es mucho más sencillo introducir los datos de acceso como usuarios en la propia base de datos de WordPress y crear una intranet, como explico aquí.
Un saludo.
Antonio dice
Hola Enrique, estoy empezando a gestionar la web de mi centro y he intentado proteger una pagina por contraseña como explicas y me ha funcionado perfectamente.
La primera vez que entro con la contraseña en la pagina protegida me pide la contraseña y entra, pero cuando salgo y vuelvo a entrar con el mismo equipo ya entra directamente y no me pide la contraseña.
Que debo hacer para que me pida siempre la contraseña aunque entre con el mismo equipo?
Gracias
Enrique Ros dice
Hola Antonio
Esa contraseña se guarda en una cookie de forma que no haya que estar introduciéndola cada vez que se visita la página. Si quieres que se vuelva a visitar tendrías que borrar las cookies del navegador.
Un saludo.
David dice
Hola Enrique!!!
Acabo de usar este plugin que recomiendas Smart Passworded Pages porque es justo lo que estaba buscando para mi web porque quiero poner un área virtual y en función de la contraseña que escriban que les lleve a una página con un contenido o a otra.
En la versión escritorio se ve y se escribe de maravilla pero el problema está en la versión móvil donde sale la pantalla con el área virtual, con el recuadro este donde hay que insertar la contraseña [smartpwpages label=»Texto del botón»] pero el teclado del móvil no se activa, sólo hace un amago pero no termina de quedarse fijo y por lo tanto si no hay teclado no puedo introducir la contraseña en el recuadro.
no se si me he explicado bien y en ese caso, puedes ayudarme? sabes como solucionarlo??
mil gracias
Enrique J. Ros dice
Hola David
Contacta directamente al desarrollador del plugin, es quien mejor puede darte soporte.
Un saludo
diego dice
Gracias por el post Enrique!! tengo una pequeña duda, si en la pagina que está protegida por contraseña, añades un submenú con otras páginas, esas páginas no están protegidas verdad?? Entiendo que solamente quedan protegida la página principal. ¿hay alguna manera de poder utilizar este plugin para proteger subpaginas dentro de la página protegida y no tener que escribir una contraseña para cada una de esas subpaginas?
gracias!!
Robert dice
Hola Enrique,
¿Hay alguna manera para agregar más de 1 contraseña en el formulario y que sirva con la función «depende de la contraseña es la página que muestra»?
Enrique J. Ros dice
Hola Robert
Sí la hay. Exactamente tal y como explico en esta misma entrada.
Un saludo
Ricard dice
Hola Enrrique, hay alguna manera que no sea necesario volver a poner la contraseña al volver a la pagina protegida, algo tipo cache que dure por ejemplo 20 minutos y transcurridos estos volver a poner la contraseña.