이번에는 워드프레스에서 웹사이트의 네비게이션과도 같이 경로를 보여주는 빵부스러기 리스트를 만들고 적절한 위치에넣는 방법을 알아보도록 하겠습니다.
먼저 대략적인 절차를 살펴 보겠습니다.
- "함수()" 형식으로 빵부스러기 목록의 함수를 만들고 이를 functions.php에 추가
- 작성한 함수를 <?php 함수명(); ?>형태로 넣고 싶은 페이지에 추가
매우 대략적이지만 위의 단계로 빵 부스러기 목록을 만듭니다.
빵부스러기 목록이라고 해도 여러가지가 있는데, 일반적으로 사용되고 있는 페이지에서의 표시 예를 정리해 보았습니다.
표시할 페이지 빵부스러기 목록
톱 페이지 | 표시하지 않음 |
카테고리 페이지 | HOME(링크 첨부) > 카테고리명 |
월별 아카이브 페이지 | HOME(링크 첨부) > 일시 |
태그 페이지 | HOME(링크 첨부) > 태그명 |
게시 페이지 | HOME(링크 첨부) > 카테고리명(링크 첨부) > 페이지 타이틀 |
고정 페이지 | HOME(링크 첨부) > 페이지 타이틀 |
검색 페이지 | HOME(링크 첨부) > 「키워드」의 검색 결과 |
404화 | HOME(링크 첨부) > 원하는 페이지를 찾을 수 없습니다. |
이러한 패턴을 각각 페이지에 맞추어 조건 분기시켜 표시시킵니다.
빵 부스러기의 각 항목을 표시하는 코드
아래 표는 각 페이지 정보(제목 이름 및 URL)를 표시하기 위한 코드입니다.
페이지PHP 코드표시되는 것
홈 | home_url(); | URL |
카테고리 | the_category(); | 텍스트 링크 |
the_archive_title(); | 텍스트 | |
일시 | 텍스트 | |
태그 이름 | 텍스트 | |
기사 제목 | the_title(); | 텍스트 |
고정 페이지 제목 | 텍스트 |
조건 분기시 코드
아래는 빵 부스러기 목록을 조건 분기로 표시 할 때 php의 if 문
if ( 조건 ) { //조건이 참일 경우 실행문 } |
의 「조건」 의 곳에 넣는 코드 일람입니다.
페이지조건 분기 태그
톱 페이지의 경우 | is_front_page() |
카테고리 페이지의 경우 | is_category() |
월별 아카이브 페이지의 경우 | is_archive() |
태그 페이지의 경우 | |
게시 페이지의 경우 | is_single() |
고정 페이지의 경우 | is_page() |
검색 페이지의 경우 | is_search() |
404페이지의 경우 | is_404() |
위의 표에서 알 수 있듯이 「월별 아카이브 페이지」 와 「태그 페이지」는 같은 조건 분기가 되므로, 정리해 빵 부스러기 리스트의 코드를 만들게 됩니다.
functions.php 에삽입한 내용
//빵부스러기 기능
function mytheme_breadcrumb()
{
//HOME>이라고 표시
$sep = '> ';
echo '<li><a href="' . get_bloginfo('url') . '" >home</a></li>';
echo $sep;
//포스트페이지 카테고리페이지에서 카테고리 단층을 표시
$cats = '';
$cat_id = '';
if (is_single()) {
$cats = get_the_category();
if (isset($cats[0]->term_id)) $cat_id = $cats[0]->term_id;
} else if (is_category()) {
$cats = get_queried_object();
$cat_id = $cats->parent;
}
$cat_list = array();
while ($cat_id != 0) {
$cat = get_category($cat_id);
$cat_link = get_category_link($cat_id);
array_unshift(
$cat_list,
'<a href="' . $cat_link . '">' . $cat->name . '</a>'
);
$cat_id = $cat->parent;
}
foreach ($cat_list as $value) {
echo '<li>' . $value . '</li>';
echo $sep;
}
single.php 에 삽입한 내용
이번에는 기사타이틀 위에 넣어 보았습니다.
<!-- 본문 -->
<div class="entry-content text-left">
<!-- 빵부스러기 -->
<div class="breadcrumb"> <?php mytheme_breadcrumb(); ?></div>
<!-- 기사타이틀 -->
<h1 class="h2 pb-3 font-weight-bolder ">