특정 카테고리 / 페이지 등에 추가된 포스트의 순서를 표시하는 방법을 공부해보자.
여기서는 워드프레스의 pre_get_posts 후크를 이용한다.
functions.php에 추가
function order_posts( $query ) { if ( !is_admin() && $query->is_tag() || !is_admin() && $query->is_category('26') ) { $query->set( 'orderby', 'title' ); $query->set( 'order', 'ASC'); } elseif ( !is_admin() && $query->is_date() ) { $query->set( 'orderby', 'date' ); $query->set( 'order', 'ASC'); } return $query; } add_action( 'pre_get_posts', 'order_posts' );
사용된 코드 설명
order_posts( $query )
:
order_posts 라는 함수를 만든다.
if ( !is_admin() && $query->is_tag() || !is_admin() && $query->is_category(‘카테고리 숫자’) )
:
어드민 페이지가 아니고 태그 페이지일 때 또는 어드민 페이지가 아니고 특정 카테고리일 때를 나타내는 조건문이다.
elseif ( !is_admin() && $query->is_date() )
:
위의 조건이 맞지 않고 어드민 페이지가 아니고 date 페이지일 때를 나타내는 조건문이다.
참고
Wordpress.org - reference - pre_get_posts
https://www.thewordcracker.com/intermediate/how-to-show-posts-randomly-in-wordpress-front-page/
Wordpress-org - reference - WP_Query