WordPress permite crear entradas protegidas por contraseña. Recientemente uno de nuestros lectores preguntó si era posible ocultar entradas protegidas por contraseña del sitio. Por defecto, WordPress oculta el contenido de una entrada protegida por contraseña, pero sigue mostrando el título de la entrada con el prefijo ‘Protegido’. En este artículo, le mostraremos cómo ocultar entradas protegidas por contraseña del bucle de WordPress.
¿Por qué ocultar entradas protegidas por contraseña en WordPress?
Por defecto, WordPress muestra la entrada protegida por contraseña con su título y un prefijo ‘protegido’. Los usuarios tendrán que introducir la contraseña para ver el contenido de la entrada.
Este título de entrada es visible en la página de inicio, archivos, widget de entradas recientes, etc. Si quieres mantener algún contenido completamente privado, entonces esto no es lo ideal.
No solo los usuarios que no tienen contraseña pueden ver el título de la entrada, también pueden intentar introducir contraseñas. Como todos sabemos, las contraseñas pueden ser descifradas.
Dicho esto, echemos un vistazo a cómo ocultar tus entradas protegidas por contraseña del bucle de WordPress para que otros usuarios no puedan verlas.
Cómo ocultar entradas protegidas por contraseña en WordPress
Simplemente añade este código al archivo functions. php de tu tema o a un plugin específico del sitio.
function wpb_password_post_filter( $where = '' ) { if (!is_single() && !is_admin()) { $where .= " AND post_password = ''"; } return $where; } add_filter( 'posts_where', 'wpb_password_post_filter' );
Este código simplemente modifica la consulta enviada a WordPress usando el filtro posts_where
. Le pide a WordPress que busque todas las entradas que no tengan contraseña.
Visite su sitio web y verá que las entradas protegidas por contraseña ya no son visibles en la página de inicio, archivos, o en widgets como entradas recientes.
Todavía puede visitar la entrada accediendo a ella a través de una URL directa a la propia entrada.
El ejemplo anterior oculta entradas protegidas por contraseña a todos los usuarios. ¿Qué pasaría si tuvieras un sitio WordPress con varios autores y quisieras que las entradas protegidas fueran visibles para los usuarios con capacidad de editar entradas privadas?
Simplemente modifique el código anterior con otra etiqueta condicional, como esta:
function wpb_password_post_filter( $where = '' ) { if (!is_single() && !current_user_can('edit_private_posts') && !is_admin()) { $where .= " AND post_password = ''"; } return $where; } add_filter( 'posts_where', 'wpb_password_post_filter' );
En este ejemplo, marcamos / comprobamos si un usuario no puede editar las entradas protegidas por contraseña, entonces solo mostramos las entradas que no tienen contraseña. De este modo, todos los usuarios con perfiles de administrador y editor verán las entradas protegidas por contraseña en la parte frontal de su sitio.
Esperamos que este artículo le haya ayudado a ocultar entradas protegidas por contraseña del bucle de WordPress en su sitio. Puede que también quieras ver nuestro tutorial sobre cómo cambiar el prefijo de entradas privadas y proteg idas en WordPress.
Si te ha gustado este artículo, entonces por favor suscríbete a nuestro canal de YouTube para tutoriales en vídeo de WordPress. También puedes encontrarnos en Twitter y Google+.
Rahul Rana
This was very helpful. Thank you very much
WPBeginner Support
You’re welcome glad our guide was helpful!
Administrador
Vincent Zhang
Thank you guys so much. This really helped me. I appreciate it. Please keep more of this type of posts coming that do not involve using a plugin.
WPBeginner Support
When a plugin-free solution is available we will be sure to try to include it.
Administrador
Louis Burkhardt
Thanks. Works great.
Mark
I created a site specific plugin and followed these steps and it worked for hiding my post on the “Posts” page of my site. However, the post is still visible on a Related Posts widget for each individual post. (Very similar to the image you have above, however my Password protected post is still visible.)
Is there anything I can do to fix this?
Alex
I wanted to make my own code adjustment to show the posts if you could read_private_posts.
function remove_password_protected_posts( $where = ” ) {
if (!is_single() && !current_user_can(‘read_private_posts’) && !is_admin() ) {
$where .= ” AND post_password = ””;
}
return $where;
}
add_filter( ‘posts_where’, ‘remove_password_protected_posts’ );
Great post as usual. Thanks.
Harin
Hi guys
I made a site specific plugin with the following code:
If I try to attach a nextgen gallery to my post, the gallery doesn’t load, as soon as I disable the plugin, the nextgen gallery goes back to normal.
Regards
Brandon
Thanks for this snippet. So helpful!
Regarding hiding these posts from the rss feed, I ran across this snippet.
function rss_filter_protected($query) {
if ($query->is_feed) {
add_filter('posts_where', 'rss_filter_password_where');
}
return $query;
}
add_filter('pre_get_posts','rss_filter_protected');
Chris
Thanks for that great tip!
But are these posts hidden from the loop with your code snippet also hidden from the RSS feed?
Louis Burkhardt
Based on a single test, the pw protected post is hidden from the RSS feed.