[WordPress] 현재 글의 이전글 다음글을 여러개 가져오기.

취미생활 > 웹프로그래밍 > [WordPress] 현재 글의 이전글 다음글을 여러개 가져오기.

[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>

답글 남기기