¿Quieres registrarte?

Personalizar el mensaje para posts protegidos en Wordpress

Por: M@U
8 de Abril del 2009
5085 de clabLevel
Otros artículos de M@U
1,356 visitas

Pues eso mismo, desde hace un par de días ando en la tarea de crear una plantilla para wordpress desde cero, debo agregar que todo marchaba de maravilla hasta que me tope con un detalle; experimentalmente bloquee un post y me dispuse a revisarlo. El resultado aunque aceptable para muchos, no me hizo sonreír.


Panel de administración de Wordpress

Para ello busque la siguiente cadena (que podrás apreciar en la imagen) devuelve wordpress por defecto sobre la plantilla, así llegue no a la carpeta del template en si, sino un poco mas profundo en el núcleo mismo:


Antes de modificar y añadir estilos personalizados, default.

El archivo encargado de dar esta función se localiza en ../wp-includes/post-template.php alrededor de la linea 980 (WP: 2.7.1), mas exactamente la función get_the_password_form.

Manos a la obra

Una vez localizada la función (comentada mas abajo), debes comprender en términos básicos el sencillo papel de esta:
  1. La función get_the_content (linea 179) revisa en cada post si esta bloqueado bajo contraseña. En caso de ser así es cuando se llama a la función get_the_password_form.
  2. Una vez invocada, cambia la salida por una cadena por defecto, entre ella una forma (<form>) que revisara la contraseña y solo redirige al post completo cuando esta sea correcta.
    Nuestro objetivo es sencillo, modificar el texto inyectado por uno que se amolde a nuestra plantilla.

Código :

function get_the_password_form() {
global $post;
$label = 'pwbox-'.(empty($post->ID) ? rand() : $post->ID);
$output = '<form action="' . get_option('siteurl') . '/wp-pass.php" method="post">
<p>' . __("This post is password protected. To view the content please type it in:") . '</p>
<p><label for="' . $label . '">' . __("Password:") . ' <input name="post_password" id="' . $label . '" type="password" size="20" /></label> <input type="submit" name="Submit" value="' . __(" ") . '" /></p>
</form>
';
return apply_filters('the_password_form', $output);
}
Así pues, lo que nos queda es modificar la función para que devuelva algo a nuestro agrado y de paso asignar un par de clases para algunos elementos y poder personalizarlos vía CSS. Por ejemplo;

Código :

function get_the_password_form() {
global $post;
$label = 'pwbox-'.(empty($post->ID) ? rand() : $post->ID);
$output = '<form id="passwordform" action="' . get_option('siteurl') . '/wp-pass.php" method="post">
<p>' . __("Sorry, but You're Not so cool to see this... try to enter a valid password:") . '</p>
<p><label for="' . $label . '">' . __("Password:") . ' <input name="post_password" id="' . $label . '" type="password" class="password" size="20" /></label> <input type="submit" name="Submit" id="submit" value="' . __(" ") . '" /></p>
</form>
';
return apply_filters('the_password_form', $output);
}
Lo dejo a tu creatividad, yo por mi parte dejo mi apenas modificado código y su drástico resultado, respectivamente:


Después de añadir un par de identificadores y clases al mismo código de arriba

El punto aquí es que desates tu imaginación.

Detalles a tomar en cuenta

Quiza el texto por default desplegado cambie un poco por la versión de WP, asi mismo por el idioma en el que este instalado; en dado caso solo debes buscar en el directorio ../wp-includes/ por el texto. Estoy seguro casi no cambiara la estructura y sera el mismo procedimiento.

Enviar a twitter Enviar a facebook


También te interesa


Etiquetas php wordpress

Comentarios | Enviar un comentario
Muy curioso tip. Gracias por la información M@U ^^
Por: XKlibur
Jeje coincidimos, andaba en la misma hace un par de días. :)

Muchas gracias mau!
Por: glsmaster
Hola M@U, por casualidad tenes idea si se puede realizar un form tipico de usuario y contraseña, que al poner esos datos te redirija al post que tenes oculto para esa clave? Estoy realizando un tema desde 0 y quisiera agregar ese campo (en el header) para usar el campo de usuario como nombre del post y el campo de contraseña como el campo de la contraseña del post.
Espero que se entienda mi consulta y desde ya te agradecería si tenes alguna idea.
Por: visualko-blog
Deja un comentario
IMPORTANTE

Recuerda ser respetuoso, no insultes a otras personas, ni uses palabrotas, hay una persona al otro lado de la pantalla.

Habla bien, NO ESCRIBAS EN MAYUSCULA TODO, no escribas como en un SMS, evita cosas como "ke", "x q" y demás abreviaciones.

Aquí funcionan las etiquetas de los foros, puedes usar [b] para negrita, [img] para las imágenes, [url] para los enlaces, etc.

Si tienes preguntas técnicas, envíalas mejor al foro.