태그 보관물: 워드프레스

워드프레스에서 ‘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 함수의 결과에 포함하도록 만들었다.

PHP/워드프레스 메모리 제한 오류

워드프레스로 운영 중인 사이트에서 특정 기능을 실행할 때마다 다음과 같은 오류가 발생해서 어떻게 해결할까 싶어서 찾아봤다.

Fatal error: Allowed memory size of xxxxxxxx bytes exhausted (tried to allocate xxxxxxx bytes) in /home/xxxxx/public_html/wp-includes/plugin.php on line xxx

우선 PHP의 메모리 제한을 늘리려고 했지만 웹 호스팅 환경에서 php.ini 설정을 바꾸기는 어려울 듯해서 대안을 찾아보니 워드프레스 메모리 제한을 늘리는 방법이 있어서 적용했다.

아래 글에 나온 것처럼 워드프레스의 wp-config.php 파일에 define('WP_MEMORY_LIMIT', '256M'); 설정을 적용한다.

이 설정만으로도 내가 겪은 문제는 해결했지만 PHP 서버 자체의 메모리 제한 때문에 오류가 발생한다면 아래 글과 같이

특정 페이지에서 다음과 같은 코드로 메모리 제한을 우회할 수 있을 듯하다.

ini_set('memory_limit','512M');

또는

ini_set('memory_limit','-1');