[WP] 현재 포스트의 카테고리내의 이전 포스트 추출하기
지금 사용 중인 테마인 Minimal Xpert에는 아래 이미지와 같이 관련글을 보여주는 부분이 있다. 원래 테마에 있던 기능은 동일 카테고리 내의 3개의 포스트를 랜덤하게 보여주는 것이었다. 그런데 내가 원한 것은 동일 카테고리내의 포스트 중에서 현재 글 바로 전에 발행된 3개의 포스트를 보여주는 것이었다.
아래는 이 기능을 위해 만들어본 WordPress 3.5.2에서 테스트된 코드이다.
<?php
$category = get_the_category();
$count = count($category);
$cat_id = array();
for($i=0; $i<$count; $i++) {
if($category[$i]->cat_ID)
$cat_id[] = $category[$i]->cat_ID;
}
$limit = 3;
$posts = $wpdb->get_results( $wpdb->prepare(
" SELECT $wpdb->posts.*
FROM $wpdb->posts
LEFT JOIN $wpdb->term_relationships ON ($wpdb->posts.ID = $wpdb->term_relationships.object_id)
LEFT JOIN $wpdb->term_taxonomy ON ($wpdb->term_relationships.term_taxonomy_id = $wpdb->term_taxonomy.term_taxonomy_id)
WHERE $wpdb->term_taxonomy.taxonomy = 'category'
AND $wpdb->term_relationships.term_taxonomy_id IN (".implode(',', $cat_id).")
AND $wpdb->posts.post_date < '%s'
AND $wpdb->posts.post_type = 'post'
AND $wpdb->posts.post_status = 'publish'
ORDER BY $wpdb->posts.post_date DESC LIMIT $limit", $post->post_date ) );
?>
포스트가 발행된 시간을 기준으로 동일 카테고리내에 있는 이전에 발행된 포스트를 3개 가져오는 것이다. 이 내용을 출력하기 위해서 아래와 같은 간단한 코드를 작성할 수 있다.
<?php
foreach($posts as $post) {
?>
<a href="<?php the_permalink() ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a>
<?php } ?>
참고포스트
http://codex.wordpress.org/Function_Reference/get_the_category
http://wordpress.org/support/topic/actual-query-to-get-posts-from-one-category-general-sql-question
http://wordpress.org/support/topic/how-to-show-last-5-posts