prosource

WordPress는 로그인한 사용자에게 개인 투고를 표시합니다. 이 기능을 해제하려면 어떻게 해야 합니까?

probook 2023. 3. 9. 22:10
반응형

WordPress는 로그인한 사용자에게 개인 투고를 표시합니다. 이 기능을 해제하려면 어떻게 해야 합니까?

새로운 WordPress 2.8 설치에서 이전에는 공개되었지만 그 이후 비공개된 Foo 카테고리에 할당된 게시물이 있습니다.WordPress에 로그인하여 (관리자로서) 같은 브라우저의 다른 탭에서 Foo 카테고리 페이지를 참조할 때 카테고리 페이지에 "PRIVATE:"라는 단어 앞에 엔트리 제목이 붙은 개인 투고가 표시됩니다.

이것으로, 아무것도 「중단」되지 않았습니다.로그인하지 않은 유저로부터 투고는 올바르게 숨겨져 있습니다.하지만 로그인한 사용자가 라이브 사이트의 비공개 게시물을 보는 것은 원하지 않습니다. 솔직히 말해서 그것은 성가신 것일 뿐 도움이 되지 않기 때문입니다.

카테고리 아카이브 페이지의 WP 루프 또는 기능 파일을 어떻게 하면 사이트에서 개인 투고를 볼 수 있는 이 원치 않는 기능을 끌 수 있습니까?

원하는 것을 하기 위한 해킹 방법은 이 코드 행을 루프 상단에 배치하는 것입니다(the_post() 부분 다음).

if( get_post_status()=='private' ) continue;

이것은 WordPress가 여전히 데이터베이스에서 게시물을 로드하고 게시 횟수 등에 반영하지만 표시할 때는 생략하기 때문에 해킹 방법입니다.예를 들어 개인 투고에만 있는 문구를 검색하면 오류 없이 빈 페이지가 나타납니다.

올바른 방법은 게시물 목록을 생성하는 데 사용되는 SQL을 수정하는 필터를 추가하는 것입니다.admin 섹션에 있는 경우 필터링을 하지 않는 것이 중요합니다.그렇지 않으면 개인 투고는 다시 표시되지 않습니다.이 필터는 테마의 기능에 가장 적합합니다.php 파일.그 안에 넣어야 할 것은 다음과 같습니다.

add_filter('posts_where', 'no_privates');
function no_privates($where) {
    if( is_admin() ) return $where;

    global $wpdb;
    return " $where AND {$wpdb->posts}.post_status != 'private' ";
}

왜 그냥 추가하지 않는 거죠?'post_status' => 'publish'에게WP_Query아르그?

$the_query = new WP_Query( array(
    'post_type' => 'post' ,
    'orderby' => 'date' ,
    'order' => 'DESC' ,
    'post_status' => 'publish',
    'posts_per_page' => 6,
) );

관리자를 포함하여 이러한 비공개 게시물을 볼 수 없는 경우 상태를 게시되지 않음 또는 초안으로 설정하지 않을 수 없습니다.

이것은 정확한 질문에 대한 직접적인 해결책은 아니지만 게시물을 숨길 수 있는 한 가지 방법은 게시물을 특정 카테고리에 할당한 후 해당 카테고리가 루프에 표시되지 않도록 숨기는 것입니다.루프 내에서(while() 스테이트먼트 직후) 특정 카테고리의 투고를 표시에서 제외하려면 다음 코드 행을 사용합니다.

<?php if (in_category('3')) continue; ?>

이 예에서 3은 제외할 카테고리의 카테고리 ID이며 코드는 WordPress에게 이 게시물을 표시하지 않고 다음 게시물로 계속 진행하도록 지시합니다.

언급URL : https://stackoverflow.com/questions/999933/wordpress-displays-private-posts-to-logged-in-users-how-to-turn-this-function

반응형