글이 많아지면 워드프레스 관리자 페이지 > 설정 > 읽기에 설정해놓은 포스트 갯수만 보이고 그 다음부터는 보이지 않는다.T.T
카테고리나 이전글, 다음글 링크도 테마에 추가해줘야하는데 어떻게 추가해야하는지 이 방법들을 알아보자.
목차
archive.php
기존 archive.php
<?php get_header(); ?> <?php single_cat_title(); ?> <?php if(have_posts()): while (have_posts()): the_post(); ?> <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a> <?php the_time('Y-m-d'); the_author_posts_link(); endwhile; endif; ?> <?php get_footer(); ?>
이 카테고리의 하위 카테고리 링크, 페이지 링크를 추가하자.
수정된 archive.php
<?php get_header(); ?> <?php single_cat_title(); ?> <?php $term = get_queried_object(); $children = get_terms($term -> taxonomy, array('parent' => $term -> term_id,'hide_empty' => false)); if ($children) { foreach($children as $subcat) { echo '<a href="' . esc_url (get_term_link ($subcat, $subcat -> taxonomy)) . '">' . $subcat->name . '</a>'; } } ?> <?php if(have_posts()): while (have_posts()): the_post(); global $post; $category = get_the_category($post->ID); echo $category[0]->name; ?> <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a> <?php the_time('Y-m-d'); the_author_posts_link(); endwhile; endif; ?> <?php global $wp_query; $big = 999999999; echo paginate_links( array( 'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ), 'format' => '?paged=%#%', 'current' => max( 1, get_query_var('paged') ), 'total' => $wp_query->max_num_pages, 'prev_next' => false, ) ); ?> <?php get_sidebar(); ?> <?php get_footer(); ?>
사용된 코드 설명
get_queried_object();
:
현재 쿼리된 개체를 검색하는 함수.
get_terms();
:
쿼리 결과 검색하는 함수.
$term -> taxonomy
:
클래스 멤버에 접근하는 구문. $변수 이름 -> 프로퍼티 메소드의 이름. 분류 값에 접근하는 구문.
‘parent’ => $term
:
배열의 키, 값을 할당할 때 사용하는 구문. $term 값을 가져오는 구문.
foreatch()
:
배열의 원소나 객체 내에서 선언된 변수의 수만큼 반복하여 동작하는 구문. $children as $subcat은 $subcat 값을 가져오는 구문.
get_term_link ($subcat, $subcat -> taxonomy)
:
$subcat의 URL을 가져오는 구문.
global $wp_query;
:
글로벌 변수 $wp_query 선언.
$big = 999999999;
:
$big 변수 선언 후 초기 값 999999999로 설정하는 구문.
paginate_links()
:
페이지 링크 불러오는 함수.
‘base’ => str_replace( $big, ‘%#%’, esc_url( get_pagenum_link( $big ) ) )
:
paginated URL의 베이스. URL 자리수.
‘format’ => ‘?paged=%#%’,
:
paginated 표시 형식. ?paged=번호 와 같은 형식으로 표시한다.
‘current’ => max( 1, get_query_var(‘paged’) ),
:
‘total’ => $wp_query->max_num_pages,
:
총 페이지 수. WP_Query 값 불러오는 구문.
‘prev_next’ => false,
:
이전 페이지 링크, 다음 페이지 링크 표시. false로 하여 페이지 번호만 표시한다.
single.php
기존 single.php
<?php get_header(); ?> <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); the_category(); the_time(); the_author_posts_link(); the_title( '<h1>', '</h1>' ); the_content(); endwhile; else: _e( '죄송합니다. 포스트를 찾을 수 없습니다.', 'mingg' ); endif; ?> <?php get_sidebar(); ?> <?php get_footer(); ?>
카테고리 계층, 이전글, 다음글 버튼을 추가하자.
수정된 single.php
<?php get_header(); $postcat = get_the_category(); $catid = $postcat[0]->cat_ID; <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); echo get_category_parents($catid,true,'»'); the_time(); the_author_posts_link(); previous_post_link( '%link', '« ', TRUE); next_post_link( '%link', ' »', TRUE ); the_title( '<h1>', '</h1>' ); the_content(); endwhile; else: _e( '죄송합니다. 포스트를 찾을 수 없습니다.', 'mingg' ); endif; ?> <?php get_sidebar(); ?> <?php get_footer(); ?>
사용된 코드 설명
get_the_category();
:
카테고리 검색하는 함수.
$postcat[0]->cat_ID;
:
cat_ID를 불러오는 구문.
get_category_parents($catid,true,’»’);
:
부모 카테고리를 표시하고 true로 링크건 후 »로 구분하는 함수.
previous_post_link( ‘%link’, ‘« ‘, TRUE);
:
이 전 포스트로 가는 링크를 «로 표시하는 함수.
next_post_link( ‘%link’, ‘ »’, TRUE );
:
다음 포스트로 가는 링크를 »로 표시하는 함수.
테마 적용
문제 없이 출력 잘 되는것 확인된다.
관련 포스트
테마 제작 – 8편 – 카테고리, 페이지링크 추가 – 현재글