[WordPress] 현재 글의 이전글 다음글을 여러개 가져오기.
현재 글의 이전글 다음글을 여러개 가져오기.
워드프레스는 게시판이 아니다보니 현재글의 바로 다음글, 이전글로는 이동할 수는 있어도,
게시판 리스트처럼 보이는 부분이 없다.
function get_post_siblings( $limit = 3, $date = '' ) { global $wpdb, $post; if( empty( $date ) ) $date = $post->post_date; $limit = absint( $limit ); if( !$limit ) return; $p = $wpdb->get_results( " ( SELECT p1.post_title, p1.post_date, p1.ID FROM $wpdb->posts p1 WHERE p1.post_date < '$date' AND p1.post_type = 'post' AND p1.post_status = 'publish' ORDER by p1.post_date desc LIMIT $limit ) UNION ( SELECT p2.post_title, p2.post_date, p2.ID FROM $wpdb->posts p2 WHERE p2.post_date > '$date' AND p2.post_type = 'post' AND p2.post_status = 'publish' ORDER by p2.post_date asc LIMIT $limit ) ORDER by post_date desc " ); $i = 0; $adjacents = array(); for( $c = count($p); $i < $c; $i++ ) if( $p[$i]->post_date < $post->post_date ) $adjacents['prev'][] = $p[$i]; else $adjacents['next'][] = $p[$i]; return $adjacents; }
이 부분을 테마에 function 부분에 넣어두고, content를 수정한다.
<div class="list"> <ul> <?php $siblings = get_post_siblings( 7 ); foreach( $siblings[next] as $n ){ echo "<li><a href='" . get_permalink( $n->ID ) . "'>" . apply_filters( 'the_title', $n->post_title ) . "</a></li>"; } echo "<li style='color:#c82020;'>".apply_filters( 'the_title', $post->post_title ) . "</li>"; foreach( $siblings[prev] as $p ){ echo "<li><a href='" . get_permalink( $p->ID ) . "'>" . apply_filters( 'the_title', $p->post_title ) . "</a></li>"; } ?> </ul> </div>