Można użyć opcji „chroń ten wpis hasłem”, ale odnosiłoby się to tylko do wybranego wpisu, do tego byłby widoczny co najmniej jego tytuł. W tym przypadku chodzi mi raczej o to, aby wpisy były ukryte całkowicie (bez jakiegokolwiek śladu w postaci choćby tytułu). Niewidoczne ani na stronie głównej, ani po wyszukaniu słowa, czy przeglądaniu kategorii.
Aby to osiągnąć należy do ukrywanego wpisu dodać w „polach użytkownika” (custom fields) pole o nazwie np „private” i wartości „true”. Następnie w pliku index.php zmodyfikować fragment kodu tuż za początkiem pętli wypisującej posty:
<?php while (have_posts()) : the_post(); $showit = true; $private = get_post_custom_values("private"); if ( isset($private[0]) && $private[0] == 'true' ) { if (!is_user_logged_in()) $showit = false; } if ($showit){ // tu wypisywanie posta } else { // a tu co robić jeśli ma zabroniony dostęp, np. nic ;-) } endwhile; ?>
Kod można oczywiście uprościć.
Czasem do wpisu można dostać się naokoło, np poprzez wyniki wyszukiwania. Warto zatem zmodyfikować też dodatkowe pliki z danego motywu (jeśli istnieją), np: single.php, search.php, archive.php itd. (szczegóły tutaj). Jeśli tego nie zrobimy, to w wynikach pokaże się treść (przynajmniej do „read the rest of this entry” jeśli użyliśmy tagu „more”, a zmodyfikowano single.php).
Podobnie należy zmodyfikować pliki /wp-includes/feed-* inaczej posty będą widoczne w RSS itp.
Jest jedna wada tej metody. Wpisy są wprawdzie uryte, jednak liczniki postów widoczne przy kategoriach zdradzają rzeczywistą liczbę.
Polecam też ten link: Making Special, Hidden Categories Separate From Your Home Page and Feed