워드프레스에서는 글의 가시성(visibility)이 private
이면 해당 글이 속한 카테고리에도 집계되지 않는 듯하다. 그런데 특정 페이지에서 가시성이 private인 글을 보여줘야 할 필요성이 있어서 이것저것 실험해 봤는데, 결국 functions.php
파일에 아래와 같은 코드를 추가해서 해결했다.
function show_private_post( $query ) {
if (is_admin()) {
return ;
}
if ($query->is_front_page()) {
return ;
}
if (is_category('the_category'))) {
$query->set('post_status', array('private', 'publish'));
}
}
add_action( 'pre_get_posts', 'show_private_post' );
첫 번째 조건을 걸지 않으면 관리자 페이지에서 ‘비공개(private)’인 글만 보고 싶을 때 전체 글이 표시되는 문제가 생기고, 두 번째 조건은 인덱스 페이지에서 비공개인 글을 표시하지 않기 위해서 추가했다. 마지막 조건에서는 글이 속한 카테고리에 따라 글의 상태를 private
과 publish
로 설정해서 get_posts
함수의 결과에 포함하도록 만들었다.