Asesor
Asesor Disponible
¡Hola! 👋 ¿Qué servicios estás buscando hoy?
Escribiendo...
Saltar al contenido

Ariapsa - Diseño & Soporte Web

¿Cómo ocultar post (entradas) protegidos por contraseña en WordPress?

Si tienes entradas protegidas por contraseña pero quieres ocultarlas a los usuarios de la página principal del sitio, en la del Blog, en los widgets del sidebar y los archivos de WordPress puedes usar el siguiente código:

Código
<div class="bsm-slider-outer">
<div class="bsm-slider"
     id="bsm_5e325a3a"
     style="border-radius:10px"
     data-total="3"
     data-autoplay="true"
     data-interval="10000"
     data-pause="true">

    <div class="bsm-track">
            <div class="bsm-slide" style="border-radius:10px">
            <div class="bsm-slide__img-wrap">
                <a href="https://ariapsa.com/diseno-de-paginas-web/" target="_blank" rel="noopener" class="bsm-slide__img-link">
                    <img src="https://ariapsa.com/wp-content/uploads/2026/08/ads-diseno-de-disitios-web-rotativo-01.jpg"
                         alt="Diseño de sitios y páginas web"
                         class="bsm-slide__img"
                         loading="lazy" width="350" height="190">
                </a>
            </div>
            <div class="bsm-slide__body">
                <h2 class="bsm-slide__title">Diseño de sitios y páginas web</h2>                <p  class="bsm-slide__desc">Desde landing page hasta tiendas online, incluye dominio y hosting                                <a href="https://ariapsa.com/diseno-de-paginas-web/" target="_blank" rel="noopener"
                   class="bsm-slide__btn"
                   style="background-color:#ca0771 !important;color:#ffffff !important;display:inline-block !important;padding:9px 20px !important;border-radius:5px !important;text-decoration:none !important;font-weight:700 !important;">
                    Ver planes y precios                </a>
                            </div>
        </div>
            <div class="bsm-slide" style="border-radius:10px">
            <div class="bsm-slide__img-wrap">
                <a href="https://ariapsa.com/mkt" target="_blank" rel="noopener" class="bsm-slide__img-link">
                    <img src="https://ariapsa.com/wp-content/uploads/2026/08/ads-banner-rotativo-marketing-digital-ariapsa.jpg"
                         alt="¿Necesitas marketing digital para tu negocio?"
                         class="bsm-slide__img"
                         loading="lazy" width="350" height="190">
                </a>
            </div>
            <div class="bsm-slide__body">
                <h2 class="bsm-slide__title">¿Necesitas marketing digital para tu negocio?</h2>                <p  class="bsm-slide__desc">Planes desde posicionamiento SEO, redes sociales, Google y ChatGPT ADS.                                <a href="https://ariapsa.com/mkt" target="_blank" rel="noopener"
                   class="bsm-slide__btn"
                   style="background-color:#c70a78 !important;color:#ffffff !important;display:inline-block !important;padding:9px 20px !important;border-radius:5px !important;text-decoration:none !important;font-weight:700 !important;">
                    Ver planes                </a>
                            </div>
        </div>
            <div class="bsm-slide" style="border-radius:10px">
            <div class="bsm-slide__img-wrap">
                <a href="https://ariapsa.com/dossier" target="_blank" rel="noopener" class="bsm-slide__img-link">
                    <img src="https://ariapsa.com/wp-content/uploads/2026/08/ads-diseno-de-dossier.jpg"
                         alt="Dossier de ventas"
                         class="bsm-slide__img"
                         loading="lazy" width="350" height="190">
                </a>
            </div>
            <div class="bsm-slide__body">
                <h2 class="bsm-slide__title">Dossier de ventas</h2>                <p  class="bsm-slide__desc">Convertimos tu presentación PPT en una herramienta de prospección optimizada para móviles.                                <a href="https://ariapsa.com/dossier" target="_blank" rel="noopener"
                   class="bsm-slide__btn"
                   style="background-color:#af1854 !important;color:#ffffff !important;display:inline-block !important;padding:9px 20px !important;border-radius:5px !important;text-decoration:none !important;font-weight:700 !important;">
                    Cotizar ahora                </a>
                            </div>
        </div>
        </div><!-- /.bsm-track -->

        <div class="bsm-arrows--center">
        <button class="bsm-arrow bsm-arrow--prev" aria-label="Anterior">‹</button>
        <button class="bsm-arrow bsm-arrow--next" aria-label="Siguiente">›</button>
    </div>
    
        <div class="bsm-dots" role="tablist">
                <button class="bsm-dot bsm-dot--active"
                data-index="0"
                role="tab"
                aria-label="Slide 1"></button>
                <button class="bsm-dot"
                data-index="1"
                role="tab"
                aria-label="Slide 2"></button>
                <button class="bsm-dot"
                data-index="2"
                role="tab"
                aria-label="Slide 3"></button>
            </div>
    
</div>
</div>

<script>
(function(){
    var el=document.getElementById('bsm_5e325a3a');
    if(!el) return;
    var track=el.querySelector('.bsm-track');
    var dots=el.querySelectorAll('.bsm-dot');
    var total=parseInt(el.dataset.total,10)||1;
    var doAuto=el.dataset.autoplay==='true';
    var ms=parseInt(el.dataset.interval,10)||10000;
    var pauseH=el.dataset.pause==='true';
    var cur=0,timer=null,busy=false;
    function go(n,instant){
        if(busy&&!instant) return;
        n=((n%total)+total)%total;
        if(n===cur&&!instant) return;
        cur=n;
        if(!instant){
            busy=true;
            track.classList.add('bsm-animating');
            var done=function(){ track.removeEventListener('transitionend',done); track.classList.remove('bsm-animating'); busy=false; };
            track.addEventListener('transitionend',done);
            setTimeout(function(){ if(busy){ track.classList.remove('bsm-animating'); busy=false; } },500);
        }
        track.style.transform='translateX(-'+(cur*100)+'%)';
        dots.forEach(function(d,i){ d.classList.toggle('bsm-dot--active',i===cur); d.setAttribute('aria-selected',i===cur?'true':'false'); });
    }
    function startAuto(){ if(doAuto&&total>1) timer=setInterval(function(){ go(cur+1); },ms); }
    function stopAuto(){ clearInterval(timer); }
    function resetAuto(){ stopAuto(); startAuto(); }
    el.querySelectorAll('.bsm-arrow--prev').forEach(function(btn){ btn.addEventListener('click',function(e){ e.preventDefault(); go(cur-1); resetAuto(); }); });
    el.querySelectorAll('.bsm-arrow--next').forEach(function(btn){ btn.addEventListener('click',function(e){ e.preventDefault(); go(cur+1); resetAuto(); }); });
    dots.forEach(function(d){ d.addEventListener('click',function(e){ e.preventDefault(); go(parseInt(d.dataset.index,10)); resetAuto(); }); });
    if(pauseH){ el.addEventListener('mouseenter',stopAuto); el.addEventListener('mouseleave',startAuto); }
    var tx=null;
    el.addEventListener('touchstart',function(e){ tx=e.touches[0].clientX; },{passive:true});
    el.addEventListener('touchend',function(e){ if(tx===null) return; var dx=e.changedTouches[0].clientX-tx; if(Math.abs(dx)>40){ go(dx<0?cur+1:cur-1); resetAuto(); } tx=null; });
    go(0,true);
    startAuto();
})();
</script>

// Función para ocultar posts protegidos por contraseña en los listados específicos
function exclude_protected($where) {
global $wpdb;
return $where .= " AND {$wpdb->posts}.post_password = '' ";
}
// Función para añadir el filtro a las consultas principales
function exclude_protected_action($query) {
// Verificar que no estamos en la administración y la consulta es principal
if (!is_admin() && $query->is_main_query()) {
// Excluir en archivos, categorías, etiquetas, página de entradas, página estática y sección de blog
if (is_archive() || is_category() || is_tag() || is_home() || is_front_page() || is_page()) {
add_filter('posts_where', 'exclude_protected');
}
// No excluir en búsquedas
// Permitir acceso directo mediante URL
// Los posts y páginas protegidos por contraseña serán accesibles directamente mediante URL
}
}
// Acción para añadir el filtro en el momento adecuado
add_action('pre_get_posts', 'exclude_protected_action');

Para que tus usuarios encuentren el contenido será necesario enviar el link de la pagina o entrada.

×
Ocultar post (entradas) protegidas excepto en determinadas categorías
¿Necesitas que en determinadas categorías se muestre las entradas protegidas por contraseña?

Explicación del código:

  1. Función exclude_protected: Añade una condición a la consulta SQL para excluir los posts que tienen una contraseña establecida (post_password no está vacío).
  2. Función exclude_protected_action: Verifica que no se está ejecutando en el área de administración y que la consulta es la principal (is_main_query()).
    • Excluye los posts protegidos por contraseña en archivos (is_archive()), categorías (is_category()), etiquetas (is_tag()), la página de inicio (is_home()), una página estática (is_front_page()), páginas individuales (is_page()) y entradas individuales (is_single()).
    • No excluye los posts protegidos en las búsquedas (is_search()).
    • Permite que los posts y páginas protegidos sean accesibles directamente mediante la URL.
  3. Acción pre_get_posts: Asegura que el filtro se aplica en el momento adecuado, antes de que WordPress obtenga los posts.

 

×

Iniciar Sesión

[custom_login_form]
[custom_registration_form]