워드프레스에서 ‘private’ 상태의 글 표시하기

워드프레스에서는 글의 가시성(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)’인 글만 보고 싶을 때 전체 글이 표시되는 문제가 생기고, 두 번째 조건은 인덱스 페이지에서 비공개인 글을 표시하지 않기 위해서 추가했다. 마지막 조건에서는 글이 속한 카테고리에 따라 글의 상태를 privatepublish로 설정해서 get_posts 함수의 결과에 포함하도록 만들었다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다