여러분이 사용하고 계신 브라우저는 HTML5를 지원하지 않기 때문에 몇몇 요소가 제대로 보이도록 JScript를 사용하고 있습니다. 하지만 여러분의 브라우저 설정에서 스크립트 기능이 꺼져있으므로, 현재 페이지를 제대로 확인하시려면 스크립트 기능을 켜주셔야 합니다. 워드프레스 테마 제작 – 08편 - 카테고리, 페이지링크 추가
워드프레스 테마 제작 – 08편 – 카테고리, 페이지링크 추가
2년전 작성
2년전 수정

글이 많아지면 워드프레스 관리자 페이지 > 설정 > 읽기에 설정해놓은 포스트 갯수만 보이고 그 다음부터는 보이지 않는다.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편 - archive.php 적용
워드프레스 테마 제작 - 8편 - single.php 적용

문제 없이 출력 잘 되는것 확인된다.

참고
관련 포스트

Mingg`s Diary
밍구
공부 목적 블로그