코딩배우기

워드프레스 빵부스러기 목록을 직접 만드는 법

탁이 2022. 10. 30. 14:41

이번에는 워드프레스에서 웹사이트의 네비게이션과도 같이 경로를 보여주는 빵부스러기 리스트를 만들고 적절한 위치에넣는 방법을 알아보도록 하겠습니다.

먼저 대략적인 절차를 살펴 보겠습니다.

  1. "함수()" 형식으로 빵부스러기 목록의 함수를 만들고 이를 functions.php에 추가
  2. 작성한 함수를 <?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 ">