페이지당 보여줄 글의 수 지정하기

페이지당 보여줄 글의 수 지정하기

페이지당 보여줄 글(기사)의 수를 템플릿으로 지정할 수 있다. 카테고리 페이지를 생성하는 경우 같은 카테고리에 속하는 모든 기사를 목록화한다.

->POINT

  • 페이지당 보여줄 글(기사)의 수를 지정:
    <?php query_posts(‘posts_per_page=~&’ .&query_string); ?>
  1. 페이지당 보여줄 글(기사)의 수 지정
  2. 페이지당 보여줄 글(기사)의 수와 루프의 처리
  3. 1페이지에 모든 기사 표시하기
  4. 지정한 카테고리에 속하는 기사 표시하기
  5. 각 카테고리에 속하는 기사 표시하기

category.php

페이지당 보여줄 글(기사)의 수와 루프의 처리

<?php get_header(); ?>

<!– 콘텐츠 –>
<div id=”content”>
<p class=”title”><?php single_cat_title(); ?></p>

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

<?php get_template_part(‘content’,’excerpt’); ?>

<?php endwhile; endif; ?>

<?php get_template_part(‘pagenation’); ?>
</div>

<?php get_sidebar(); ?>

<?php get_footer(); ?>

category.php에 입력한 ‘루프’의 설정(초록색 부분). 루프 내에는 content-excerpt.php를 로딩하는 지정을 입력해서 데이터베이스로부터 취득한 기사마다 제목과 요약문을 출력한다.

1페이지에 모든 기사 표시하기

<?php get_header(); ?>

<!– 콘텐츠 –>
<div id=”content”>
<p class=”title”><?php single_cat_title(); ?></p>

<?php query_posts(‘posts_per_page=-1&’); ?>

<?php if(have_posts()): while(have_posts()):
the_post(); ?>
<?php get_template_part(‘content’,’excerpt’); ?>
<?php endwhile; endif; ?>

<?php get_template_part(‘pagenation’); ?>
</div>

<?php get_sidebar(); ?>

<?php get_footer(); ?>

posts_per_page 값이 ‘-1’이라고 지정하면, 1페이지에 모든 기사를 표시한다. 이와 같이  지정하면 ‘페이지당 보여줄 글의 수’는 posts_per_page의 지정에 의해 덮어쓰기가 되고, 카테고리 페이지에는 1페이지에 모든 기사가 리스트업된다.

->MEMO

<?php query_posts(); ?>의 지정은  반드시 루프 앞에 입력한다.

->MEMO

포스트한 기사의 수가 많은 경우 처리하고 표시하는데 시간이 걸리기 때문에 주의하기 바란다.

지정한 카테고리에 속하는 기사 표시하기

<?php get_header(); ?>

<!– 콘텐츠 –>
<div id=”content”>
<p class=”title”><?php single_cat_title(); ?></p>

<?php query_posts(‘posts_per_page=-1&category_name=festival‘); ?>
<?php if(have_posts()): while(have_posts()):
the_post(); ?>
<?php get_template_part(‘content’,’excerpt’); ?>
<?php endwhile; endif; ?>

<?php get_template_part(‘pagenation’); ?>
</div>

<?php get_sidebar(); ?>

<?php get_footer(); ?>

복수의 파라미터는 &로 연결해서 입력한다. 이 방식은 모든 카테고리 페이지에 ‘festival’에 속하는 기사가 표시된다.

각 카테고리에 속하는 기사 표시하기

<?php get_header(); ?>

<!– 콘텐츠 –>
<div id=”content”>
<p class=”title”><?php single_cat_title(); ?></p>

<?php query_posts(‘posts_per_page=-1&’ . $query_string); ?>
<?php if(have_posts()): while(have_posts()):
the_post(); ?>
<?php get_template_part(‘content’,’excerpt’); ?>
<?php endwhile; endif; ?>

<?php get_template_part(‘pagenation’); ?>
</div>

<?php get_sidebar(); ?>

<?php get_footer(); ?>

파라미터를 $query_string으로 수정하면 ‘루프’의 페이지 마다 표준으로 출력하는 기사의 조선을 지정한다.

->MEMO

<?php query_posts(); ?>의 파라미터는 문자열이기 때문에 홑따옴표를 사용하고 <?php query_posts(‘posts_per_page=-1’); ?>이라는 형식으로 입력한다. 그러나 $query_string은 PHP 변수이고 「’」로 장식하면 PHP가 처리할 수 없게 된다. 따라서 $query_string의 지정은 ~의 바깥쪽에 입력하고 마침표(.)를 붙여서 입력한다.

->TIPS 1페이지에 표시하는 기사의 수를 적게 할 경우 주의할 점

posts_per_page를 지정할 때 생성되는 페이지 수가 관리화면의 지정에 의해 생성되는 페이지보다 많지 않도록 한다. posts_per_page로 지정한 기사의 수가 관리화면에서 지정한 기사의 수보다 적으면 문제가 발생하기 때문에 주의하기 바란다.

->TIPS 톱페이지와 월별  페이지에 표시할 기수의 수 지정하기

home.php

<?php get_header(); ?>

<!– 콘텐츠 –>
<div id=”content”>
<p class=”title”>RECENT POSTS</p>

<?php query_posts(‘posts_per_page=2&’ . $query_string); ?>

<?php if(have_posts()): while(have_posts()):
the_post(); ?>
<?php get_template_part(‘content’); ?>
<?php endwhile; endif; ?>

<?php get_template_part(‘pagenation’); ?>
</div>

<?php get_sidebar(); ?>

<?php get_footer(); ?>

톱페이지의 표시. 2건의 기사를 표시하도록 지정

date.php

<?php get_header(); ?>

<!– 콘텐츠 –>
<div id=”content”>
<p class=”title”><?php single_month_title(); ?></p>

<ul class=”post”>

<?php query_posts(‘posts_per_page=5&’ . $query_string); ?>

<?php if(have_posts()): while(have_posts()):
the_post(); ?>
<?php get_template_part(‘content’,’title’); ?>
<?php endwhile; endif; ?>
</ul>

<?php get_template_part(‘pagenation’); ?>
</div>

<?php get_sidebar(); ?>

<?php get_footer(); ?>

>월별 페이지의 표시. 5건의 기사를 표시하도록 지정

->TIPS 카테고리마다 표시할 기사의 수 변경하기

변경 전

<p><?php single_cat_title(); ?></p><?php query_posts(‘posts_per_page=-1&’ . $query_string); ?>
<?php if(have_posts()): while(have_posts()):
the_post(); ?>

변경후

PHP의 조건 분기 if()를 이용해서 카테고리마다 posts_per_page의 값을 변경한다. 예를 들어 ‘festival’의 카테고리에서는 모든 기사를 표시하고, 그 외의 카테고리에서는 2건의 기사를 표시하는 경우 다음과 같이 지정한다.

<?php get_header(); ?>

<!– 콘텐츠 –>
<div id=”content”>
<p class=”title”><?php single_cat_title(); ?></p>

<?php
if($category_name == ‘festival’) {
$mypostlist = ‘-1’;
} else {
$mypostlist = ‘2’;
};
?>

<?php query_posts(‘posts_per_page=’. $mypostlist . ‘&’ . $query_string); ?>
<?php if(have_posts()): while(have_posts()):
the_post(); ?>
<?php get_template_part(‘content’,’excerpt’); ?>
<?php endwhile; endif; ?>

<?php get_template_part(‘pagenation’); ?>
</div>

<?php get_sidebar(); ?>

<?php get_footer(); ?>

->TIPS <?php query_posts()?>로 지정할 수 있는 루프의 파라미터

출력하는 기사의 수 등을 사용자정의로 지정하기 위해서는  <?php query_posts()?>로 루프 처리에 관한 파라미터를 지정한다. 지정할 수 있는 주요 파라미터는 다음의 종류들이 있고 카테고리와 작성일, 표시순서 등도 지정할 수 있다.

파라미터           값

p                    지정한 기사를 출력(지정 가능한 값: 기사의 ID)

name               지정한 기사를 출력(지정 가능한 값: 기사의 슬러그)

page_id            지정한 페이지의 콘텐츠를 출력(지정 가능한 값: 페이지의 ID)

pagename         지정한 페이지의 콘텐츠를 출력(지정 가능한 값: 페이지의 슬러그)

attachment_id     지정한 미디어를 출력(지정 가능한 값: 미디어의 ID)

cat                   지정한 카테고리에 속하는 기사를 출력(지정 가능한 값: 카테고리의 ID)

category_name    지정한 카테고리에 속하는 기사를 출력(지정 가능한 값: 카테고리의 슬러그)

tag                   지정한 태그로 태그한 기사를 출력(지정 가능한 값: 태그의 이름)

tag_id                지정한 태그로 태그한 기사를 출력(지정 가능한 값: 태그의 ID)

year                  지정한 년에 작성한 기사를 출력(지정 가능한 값: 년)

monthnum          지정한 월에 작성한 기사를 출력(지정 가능한 값: 월)

day                  지정한 일에 작성한 기사를 출력(지정 가능한 값: 일)

author_name        지정한 사용자가 작성한 기사를 출력(지정 가능한 값: 사용자 이름)

author               지정한 사용자가 작성한 기사를 출력(지정 가능한 값: 사용자 ID)

posts_per_page      출력하는 기사의 수를 지정(지정 가능한 값: 숫자)

offset                  몇 번째 이후의 기사를 출력할 것이지 지정(지정 가능한 값: 숫자)

paged            몇 페이지째 기사를 출력할 것인지 지정(지정 가능한 값: 숫자)

order           기사의 표시 순서를 지정(지정 가능한 값: ASC[오름차순] DESC[내림차순])

orderby           기사의 나열 순서를 지정(지정 가능한 값: date[오름차순] category[내림차순] 등 modified[업데이트 일])

post_type           지정한 포스트 타입의 콘텐츠를 출력(지정 가능한 값: post[포스트 기사] page[개별 페이지] 등)

post_status           지정한 공개 스테이터스의 기사를 출력(지정 가능한 값: publish[공개] draft[임시작성] future[예약 포스트] 등)

출처: 바꾸면서 배우는 워드프레스 디자인

“페이지당 보여줄 글의 수 지정하기”에 대한 한개의 댓글

답글 남기기