워드프레스 루프(wordpress loop)는 워드프레스 개발에 가장 많이 사용되는 loop로, 주로 웹사이트에 저장된 post나 페이지 등의 콘텐츠를 동적으로 보여주는 데 사용됩니다.
워드프레스 루프 기본 개념
워드프레스 루프는 PHP 코드 블록으로, 웹사이트의 데이터베이스에서 콘텐츠를 검색하여 페이지에 동적으로 로드합니다.
다음과 같이 작성합니다
<?php
while(have_posts()) {
the_post()
}
?>
- while loop : 워드프레스 루프는 기본적으로 while 루프를 사용하며 have_post() 함수를 argument로 받습니다.
- have_posts() : 이 함수는 표시해야할 포스트가 남아있는 지 확인하는 함수이고 더 이상 로드할 포스트가 없을 때까지 while 루프를 실행합니다.
- 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; ?>
- if 문에서 have_posts()함수를 통해 표시할 포스트가 있는 지 확인
- 만약 있다면, 표시할 포스트가 없을 때 까지 while를 순회하며 포스트 정보를 가져옴
- <?php the_permalink(); ?> : 각 포스트의 url을 출력
- <?php the_title(); ?> : 각 포스트의 타이틀을 출력
- <?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() 함수는 사용자 지정 쿼리를 생성한 후 원본 쿼리를 복구하는 함수입니다,
오류 발생 방지를 위해 사용자 지정 쿼리 사용 후 루프 종료 전에 호출하는 습관을 들이는 것이 좋습니다.