워드프레스 개발 : wordpress loop

워드프레스 루프(wordpress loop)는 워드프레스 개발에 가장 많이 사용되는 loop로, 주로 웹사이트에 저장된 post나 페이지 등의 콘텐츠를 동적으로 보여주는 데 사용됩니다.

워드프레스 루프 기본 개념

워드프레스 루프는 PHP 코드 블록으로, 웹사이트의 데이터베이스에서 콘텐츠를 검색하여 페이지에 동적으로 로드합니다.

다음과 같이 작성합니다

<?php 
while(have_posts()) {
    the_post()
}
?>
  1. while loop : 워드프레스 루프는 기본적으로 while 루프를 사용하며 have_post() 함수를 argument로 받습니다.
  2. have_posts() : 이 함수는 표시해야할 포스트가 남아있는 지 확인하는 함수이고 더 이상 로드할 포스트가 없을 때까지 while 루프를 실행합니다.
  3. the_post() : 로드할 포스트의 제목, 내용 등의 데이터를 가져옵니다.

워드프레스 루프 사용 예시

1. 포스트 동적 표시

<?php 
if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>

    <div class="post">
        <h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
        <div class="entry">
            <?php the_content(); ?>
        </div>
    </div>

<?php endwhile; else: ?>

    <p>죄송합니다, 게시글이 없습니다.</p>

<?php endif; ?>
  1. if 문에서 have_posts()함수를 통해 표시할 포스트가 있는 지 확인
  2. 만약 있다면, 표시할 포스트가 없을 때 까지 while를 순회하며 포스트 정보를 가져옴
  3. <?php the_permalink(); ?> : 각 포스트의 url을 출력
  4. <?php the_title(); ?> : 각 포스트의 타이틀을 출력
  5. <?php the_content(); ?> : 각 포스트의 내용을 출력

요약하자면,

위 코드는 워드프레스 쿼리에 따라, 표시해야할 포스트가 있는 지 확인하고, 만약 있다면 표시해야할 포스트가 없어질 때 까지 모든 포스트의 url, 타이틀, 내용을 출력하는 코드입니다.

2. 특정 카테고리 최신 포스트 5개 표시

<?php 
$args = array(
    'posts_per_page' => 5, // 최신 5개의 포스트를 표시
    'category_name' => '특정카테고리', // 특정 카테고리 지정
);

$the_query = new WP_Query($args);

if ( $the_query->have_posts() ) : 
    while ( $the_query->have_posts() ) : $the_query->the_post();
?>

    <div class="post">
        <h3><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3>
        <p><?php the_excerpt(); ?></p>
    </div>

<?php 
    endwhile;
    wp_reset_postdata(); // 원본 쿼리 복구
else : 
?>

    <p>해당 카테고리에 포스트가 없습니다.</p>

<?php endif; ?>

1. 사용자 지정 쿼리의 파라미터로 사용할 변수 생성

<?php 
$args = array(
    'posts_per_page' => 5, // 최신 5개의 포스트를 표시
    'category_name' => '특정카테고리', // 특정 카테고리 지정
);

2. 사용자 지정 쿼리 생성

$the_query = new WP_Query($args);

3. 워드프레스 루프 사용

if ( $the_query->have_posts() ) : 
    while (  $the_query->have_posts()) : $the_query->the_post();
?>

사용자 지정 쿼리 루프를 사용할 때는 일반적인 워드프레스와 다르게 위 코드처럼 $the_query->have_posts(), $the_query->the_post() 와 같이 함수를 호출합니다.

4. 포스트 표시

    <div class="post">
        <h3><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3>
        <p><?php the_excerpt(); ?></p>
    </div>

워드프레스 루프를 돌면서 포스트를 표시합니다.

the_excerpt()함수는 콘텐츠의 내용을 요약하여 표시하는 함수입니다. 보통 아카이브나 검색 결과 페이지 등에서 전체 글 대신 간략한 내용을 보여주는 데 사용됩니다.

5. 워드프레스 루프 종료

<?php 
    endwhile;
    wp_reset_postdata(); // 원본 쿼리 복구
else : 
?>

wp_reset_postdata() 함수는 사용자 지정 쿼리를 생성한 후 원본 쿼리를 복구하는 함수입니다,

오류 발생 방지를 위해 사용자 지정 쿼리 사용 후 루프 종료 전에 호출하는 습관을 들이는 것이 좋습니다.