sidebar에서 년월을 선택했을 때 그 년월에 해당하는 글만 표시해주는 워드프레스 date 아카이브 템플릿 date.php 파일을 만들어보자.
date.php를 만들면 archive.php랑 다른 템플릿으로 년 월이 제목으로 표시되고 밑에 목록 나오게 설정할 수 있다.
목차
date.php 파일 만들기
date.php 예시
<?php /* Template Name: date page */ get_header(); ?> <h2><?php echo single_month_title(); ?></h2> <?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; else: ?> <p><?php _e('이 사용자가 작성한 포스트가 없습니다.'); ?></p> <?php endif; ?> </div> <?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(); ?>
사용된 코드 설명
single_month_title();
:
이 달의 년도, 월 가져오는 함수.
functions.php
기존 포스트 정렬 함수
<?php function order_posts( $query ) { if ( !is_admin() && $query->is_tag() ) { $query->set( 'orderby', 'title' ); $query->set( 'order', 'ASC'); } } add_action( 'pre_get_posts', 'order_posts' ); ?>
수정된 포스트 정렬 함수
<?php function order_posts( $query ) { if ( !is_admin() && $query->is_tag() ) { $query->set( 'orderby', 'title' ); $query->set( 'order', 'ASC'); } elseif ( !is_admin() && $query->is_date() ) { $query->set( 'orderby', 'date' ); $query->set( 'order', 'ASC'); } } add_action( 'pre_get_posts', 'order_posts' ); ?>
테마 적용
문제 없이 출력 잘 되는것 확인된다.
관련 포스트
테마 제작 – 10편 – date.php 만들기 – 현재글