Recent a trebuit să găsim o soluție simplă și eficientă la următoarea problemă: cum să facem ca un articol (sau mai multe) să fie accesibile prin link direct, dar să nu fie vizibile pe blog, în articole recente și în nicio altă secțiune a blogului?

Practic, un client a dorit, în conținutul unei campanii de email marketing, să distribuie potențialilor lui clienți o serie de articole scrise de el. Aceste articole trebuiau să fie accesibile destinatarilor mesajelor și oricui ar fi știut adresa articolelor, dar să nu apară și printre restul articolelor de pe blog. Nici măcar dacă cineva ar fi căutat după cuvinte cheie în site. Astfel, articolele erau publice, însă „ascunse” din lista articolelor general prezente pe blog.

Soluția cea mai simplă ar fi fost să instalăm un plugin ca WP Hide Post, însă nu l-am ales din două motive:

  1. nu este funcțional decât parțial și nu a mai fost menținut de programatorul inițial de multă vreme
  2. preferăm să găsim soluții simple în locul instalării de pluginuri numeroase, care pot crea situații conflictuale și de cele mai multe ori îngreunează funcționarea site-ului

Așa că am decis să aplicăm o soluție mai eficientă:

Am mutat toate articolele care urmează să fie ascunse într-o categorie separată, pe care am numit-o generic Articole campanie și care are id-ul 56.

Am adăugat în functions.php din tema blogului codul

// exclude categorie de articole

function exclude_categorie( $query ) {
$query->set( 'cat', '-56' );
return $query;
}

add_filter( 'pre_get_posts', 'exclude_categorie' );

Am salvat fișierul functions.php și, verificând pe blog, am constatat cu bucurie că niciunul din articolele din categoria respectivă nu mai apărea nicăieri (pe pagina principală a blogului, în căutări, în widget-urile cu articole recente sau în articole similare).

🙂