워드프레스 고급 강의 - 관련글

관련 글 추가하기 – 워드프레스 강좌

이번에는 워드프레스에서 관련 글 템플릿 만드는 방법을 알아볼게요. 이번에도 배열에 속성 넣는 부분이 중요합니다.

1. 기본 관련 글 템플릿

기본적으로 관련 글을 표시하는 템플릿을 작성합니다. 이 템플릿은 현재 글과 같은 카테고리에 속한 다른 글을 보여줍니다.

코드 설명

<?php
$args = array(
    'posts_per_page' => 4, // 표시할 항목 수
    'post__not_in'   => array(get_the_ID()), // 현재 글 제외
    'no_found_rows'  => true, // 페이지네이션 필요 없음
);

// 현재 글의 카테고리 가져오기
$cats = wp_get_post_terms(get_the_ID(), 'category');
$cats_ids = array(); // 카테고리 ID 배열
foreach ($cats as $related_cat) {
    $cats_ids[] = $related_cat->term_id;
} // 반복문으로 카테고리 ID 배열에 추가

if (!empty($cats_ids)) {
    $args['category__in'] = $cats_ids; // 카테고리 ID 배열이 비어있지 않으면 args에 추가
}

$arr_posts = new WP_Query($args); // WP_Query로 관련 글 가져오기
?>

<!-- if문 : 해당 배열 안에 포스트 데이터가 있는지 확인 -->
<?php if ($arr_posts->have_posts()) : ?>
    <!-- while문 : 해당 배열 안에 포스트를 반복해서 불러오기 -->
    <?php while ($arr_posts->have_posts()) : $arr_posts->the_post(); ?>
        <!-- Start : 이 안에 코드 형식으로 출력 -->
        <div class="col-3">
            <?php get_template_part('content'); ?>
        </div>
        <!-- End : 이 안에 코드 형식으로 출력 -->
    <?php endwhile; ?>

<?php else : ?>
    <!-- if문 : 해당 배열 안에 포스트 데이터가 없을 때 실행 -->
    <?php get_template_part('content', 'empty'); ?>
<?php endif; ?>

2. 커스텀 포스트 타입(CPT)에 적용하기

특정 커스텀 포스트 타입(CPT)에만 관련 글을 표시하고 싶을 때 사용하는 템플릿입니다. 예를 들어 work라는 CPT에 대해 관련 글을 표시합니다.

코드 설명

<?php
$args = array(
    'posts_per_page' => 3, // 표시할 항목 수
    'paged' => $paged, // 페이지네이션 사용 시
    'post_type' => 'work', // CPT 이름
    'post__not_in'   => array(get_the_ID()), // 현재 글 제외
    'no_found_rows'  => true, // 페이지네이션 필요 없음
);

$arr_posts = new WP_Query($args); // WP_Query로 관련 글 가져오기
?>

<!-- if문 : 해당 배열 안에 포스트 데이터가 있는지 확인 -->
<?php if ($arr_posts->have_posts()) : ?>
    <!-- while문 : 해당 배열 안에 포스트를 반복해서 불러오기 -->
    <?php while ($arr_posts->have_posts()) : $arr_posts->the_post(); ?>
        <!-- Start : 이 안에 코드 형식으로 출력 -->
        <div class="col-4">
            <?php get_template_part('content-work'); ?>
        </div>
        <!-- End : 이 안에 코드 형식으로 출력 -->
    <?php endwhile; ?>

<?php else : ?>
    <!-- if문 : 해당 배열 안에 포스트 데이터가 없을 때 실행 -->
    <?php get_template_part('content', 'empty'); ?>
<?php endif; ?>

관련 글 템플릿 불러오기

이제 위에서 만든 템플릿 파일을 특정 페이지나 템플릿 파일에서 불러와 사용합니다.

<?php get_template_part('related-posts'); ?>

또는 CPT에 적용한 템플릿의 경우:

<?php get_template_part('related-work-posts'); ?>

이와 같이 관련 글 템플릿을 활용하면, 워드프레스 사이트에서 특정 조건에 맞는 관련 글을 손쉽게 불러와서 표시할 수 있습니다. 이를 통해 사용자에게 더 나은 탐색 경험을 제공할 수 있습니다.