Solución a un error de protección por contraseña

Sin acceso a entradas o páginas protegidas por contraseña tras actualizar a WordPress 3.4

En una entrada anterior vimos cómo personalizar el formulario de contraseña de WordPress cuando queremos proteger nuestras páginas o entradas. Hasta la versión 3.3, este código funcionaba sin problema, pero después de actualizar a 3.4, si hemos personalizado este formulario, no podremos acceder al contenido, aunque la contraseña sea correcta.

Esto ocurre porque a partir de la versión 3.4, WordPress deja de utilizar “wp-pass.php” (es decir, pasa a “deprecated”), sustituyéndolo por “wp-login.php“. En la lista de cambios de la versión 3.4 se especifica:

“Set post password cookies via an action in wp-login.php; retire wp-pass.php (one less root file); obey login ssl preferences for post password form submission”

Por tanto, la solución en este caso no es complicada: tenemos que sustituir la llamada a “wp-pass.php” por “wp-login.php?action=postpass en nuestro formulario de contraseña personalizado (que seguramente estará en el archivo “functions.php” del tema activo, en algún plugin, o bien en alguna hoja de funciones separada):

function custom_password_form() {
	global $post;
	$label = 'pwbox-'.(empty($post->ID) ? rand() : $post->ID );
	$o = '<form class="protected-post-form" action="' . get_option('siteurl') . '/wp-login.php?action=postpass" method="post">
		' . __( "<p><strong>Esta informaci&oacute;n est&aacute; protegida.</strong><br />Por favor, para verla escribe la contrase&ntilde;a a continuaci&oacute;n:</p>" ) . '
	<p><input name="post_password" id="' . $label . '" type="password" size="25" /><input type="submit" name="Submit" value="' . esc_attr__( "Submit" ) . '" /></p></form>';
	return $o; }
	add_filter('the_password_form', 'custom_password_form');

Cualquier plugin o theme que haga referencia al archivo “wp-pass.php” debería haberse actualizado (la actualización de WordPress 3.4 es de junio de 2012), o sea que si tenemos problemas relacionados con el acceso a entradas con contraseña, una buena idea sería revisar también los plugins activos o cambiar temporalmente el theme activo para ver si esto soluciona el error.

Es algo que conviene revisar en todas las webs que utilicen esta función, para asegurarnos de que todos los contenidos son accesibles. Si no lo hacemos, será el cliente o los usuarios quienes nos avisen del error.

La función de protección de contenidos por contraseña está incluida en WordPress por defecto. No es necesario retocar nada ni hacer ningún cambio para que funcione. Sin embargo, si queremos modificar el aspecto visual y el contenido (por ejemplo, sustituir la palabra “Protegido” por algo que nos guste más), tenemos que modificar este formulario, normalmente añadiéndolo en el archivo “functions.php” o a través de un plugin.

Resumiendo

  • Si la versión de WordPress instalada es la 3.4 o superior
  • Y si utilizas un formulario de acceso por contraseña personalizado
  • Buscar la función con la cual se modifica ese formulario (generalmente en functions.php)
  • Y sustituir la llamada a “wp-pass.php” por “wp-login.php?action=postpass”

Comentarios

  1. Oliver

    Hice lo señalado pero no hay cambio alguno. Necesito cambiar de nombre al botón y no puedo.
    Pueden ayudarme. Gracias.

  2. Daniel

    Hola Oliver. Para poder ayudarte hay que saber qué es lo que quieres hacer exactamente. ¿Qué es lo que no funciona? ¿A qué botón te refieres?

    Si lo que quieres es cambiar el texto del botón de envío de contraseña (“Submit”), tienes que cambiarlo donde dice “value”, en el input type=”submit”.

  3. cinthya

    hola daniel, yo tengo unas paginas protegidas con contraseña, y nadie las puede ver si no tienes la contraseña (creo hasta ahi todo funciona bien) lo que quiero hacer es un super usuario que pueda ver las paginas protegidas con contraseña (sin que le pidan contraseña), no encuentro el plugin para esto, puedo hacer el super usuario para las paginas privadas pero no las protegidas con contraseña me puedes ayudar :(!

  4. Felipe

    Hola Daniel
    ¿cómo puedo hacerle para que me pida la contraseña cada vez que se salga de la página protegida? Pues me la pide una sola vez y la recuerda por mucho tiempo, entonces queda desprotegidas la página.
    Gracias y saludos!

  5. Daniel

    Hola Felipe.
    Aquí tienes información sobre el tema de las páginas protegidas con contraseña. Creo que lo que comentas está explicado en esta entrada:
    http://www.danielnabil.com/blog/wordpress-boton-salir-paginas-contrasena/

Y tú qué opinas?

Las URLs se convertirán en enlaces automáticamente. Tu dirección de email no se publicará ni se utilizará para enviar ningún tipo de información. Los mensajes que no aporten nada al tema que se trata en esta entrada se borrarán. Las imágenes que aparecen al lado de cada autor utilizan el servicio de Gravatar. Recuerda que puedes usar etiquetas HTML como <a href>, <code>, <em> o <strong> en los comentarios.

(necesario)

(opcional)