Trusted WordPress tutorials, when you need them most.
Beginner’s Guide to WordPress
Copa WPB
25 Million+
Websites using our plugins
16+
Years of WordPress experience
3000+
WordPress tutorials
by experts

Cómo ocultar entradas protegidas por contraseña del bucle de WordPress

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.

Password protected posts displayed on homepage and in widgets

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.

Before and after hiding protected posts in WordPress

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+.

Descargo: Nuestro contenido está apoyado por los lectores. Esto significa que si hace clic en algunos de nuestros enlaces, podemos ganar una comisión. Vea cómo se financia WPBeginner , por qué es importante, y cómo puede apoyarnos. Aquí está nuestro proceso editorial .

Avatar

Editorial Staff at WPBeginner is a team of WordPress experts led by Syed Balkhi with over 16 years of experience in WordPress, Web Hosting, eCommerce, SEO, and Marketing. Started in 2009, WPBeginner is now the largest free WordPress resource site in the industry and is often referred to as the Wikipedia for WordPress.

El último kit de herramientas de WordPress

Obtenga acceso GRATUITO a nuestro kit de herramientas - una colección de productos y recursos relacionados con WordPress que todo profesional debería tener!

Reader Interactions

12 comentariosDeja una respuesta

  1. Syed Balkhi

    Hey WPBeginner readers,
    Did you know you can win exciting prizes by commenting on WPBeginner?
    Every month, our top blog commenters will win HUGE rewards, including premium WordPress plugin licenses and cash prizes.
    You can get more details about the contest from here.
    Start sharing your thoughts below to stand a chance to win!

  2. Rahul Rana

    This was very helpful. Thank you very much :)

    • WPBeginner Support

      You’re welcome glad our guide was helpful!

      Administrador

  3. 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

  4. Louis Burkhardt

    Thanks. Works great.

  5. 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?

  6. 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.

  7. 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

  8. 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');

  9. 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.

Deja tu comentario

Gracias por elegir dejar un comentario. Tenga en cuenta que todos los comentarios son moderados de acuerdo con nuestros política de comentarios, y su dirección de correo electrónico NO será publicada. Por favor, NO utilice palabras clave en el campo de nombre. Tengamos una conversación personal y significativa.