>백엔드 개발 >PHP 튜토리얼 >두 번째 분류법의 용어별로 범주 나열: 분류법 아카이브

두 번째 분류법의 용어별로 범주 나열: 분류법 아카이브

WBOY
WBOY원래의
2023-09-01 11:05:07731검색

按第二个分类法的术语列出分类目录:Taxonomy Archives

웹사이트에서 여러 분류법을 사용하여 정보를 분류하는 경우 두 번째 분류법의 조건에 따라 분류법 아카이브의 게시물을 분할하는 것이 도움이 될 수 있습니다.

이 튜토리얼에서는 이를 달성하기 위해 카테고리 아카이브를 만드는 방법을 보여 드리겠습니다.

관계형 데이터베이스를 사용해 본 적이 있다면, 그 뛰어난 기능 중 하나가 여러 분류법에 따라 데이터를 볼 수 있다는 점을 알게 될 것입니다. 예를 들어, 클라이언트 데이터베이스가 있는 경우 다양한 프로젝트 범주에 어떤 클라이언트가 당신을 고용했는지 쉽게 확인할 수 있으며, 예를 들어 특정 위치에 어떤 웹 디자인 클라이언트가 있는지 확인하여 추가로 정렬할 수 있습니다.

처음 WordPress를 사용하기 시작했을 때 이 작업을 쉽게 수행할 수 없다는 사실에 좌절했습니다. 적어도 기본 테마를 실행하는 즉시 사용 가능한 WordPress 설치로는 수행할 수 없었습니다.

그러나 데이터는 여러 분류법을 통해 분류될 수 있습니다. 이 튜토리얼에서는. 해당 카테고리의 게시물을 나열하고 해당 카테고리가 존재하는 다른 카테고리에도 적용되는 용어별로 정렬된 카테고리 페이지를 만드는 방법을 보여 드리겠습니다.

그런 다음 첫 번째 카테고리의 용어 순서대로 게시물을 나열하는 두 번째 카테고리에 대한 두 번째 카테고리 아카이브를 만들 것입니다. (저를 믿으세요. 실제로 발생하는 것을 보면 더 이해가 될 것입니다!)

무엇이 필요하세요?

이 튜토리얼을 완료하려면 다음이 필요합니다.

  • 워드프레스 개발 설치
  • 코드 편집기

1. 테마 만들기

이 튜토리얼에서는 두 개의 새로운 템플릿 파일, 스타일시트 및 함수 파일을 사용하여 24개의 하위 테마를 만듭니다. 자신만의 테마를 사용하는 경우 내 함수 파일의 코드를 테마의 함수 파일에 복사한 다음 테마의 마크업을 반영하도록 조정된 템플릿 파일을 추가하면 됩니다.

테마를 만들기 위해 빈 테마 폴더 안에 style.css라는 파일을 만들고 다음 콘텐츠로 채웁니다.

으아악

내 아이 테마가 생성됩니다.

2. 게시물 유형 및 분류를 등록하세요

이 튜토리얼에서는 생성 튜토리얼에서 사용한 것과 동일한 'animals' 帖子类型和 'animal_cat' 分类法自定义帖子类型模板。我还将添加第二个分类法,名为 'habitat'을 사용합니다.

이를 위해 functions.php라는 새 파일을 만듭니다. 먼저 내 게시물 유형을 등록하는 기능을 추가합니다.

으아악

그런 다음 함수에 두 가지 분류법을 등록합니다.

으아악

이렇게 하면 내 게시물을 보다 쉽게 ​​관리할 수 있도록 'animal' 帖子类型以及适用于它的两个分类法。请注意,我使用了 'show_admin_column'이 생성됩니다.

일부 데이터를 추가하고 분류 체계에 따라 동물을 분류한 후 이제 아래와 같이 WordPress 대시보드에서 내 데이터를 볼 수 있습니다.

참고: 제가 사용하는 동물의 분류는 그리 과학적이지 않습니다. 서식지나 가족에 대한 저의 이해에 대해 언급하지 마세요!

按第二个分类法的术语列出分类目录:Taxonomy Archives

3. 첫 번째 카테고리 템플릿 파일을 만듭니다

다음 단계는 'animal_cat' 分类存档创建模板文件。在主题文件夹中创建一个文件并将其命名为 taxonomy-animal_cat.php입니다. 이제 테마에서 래퍼 코드를 추가하세요(이 코드는 상위 테마에서 복사했습니다. 자신만의 테마를 사용하는 경우 코드가 달라집니다):

으아악

이제 이 템플릿 파일에 일부 데이터를 추가해야 합니다.

현재 쿼리의 용어를 식별합니다

아카이브 템플릿은 WP_Query를 사용하여 각 용어에 대한 사용자 정의 쿼리를 생성합니다. 쿼리 개체 중 하나는 현재 표시된 분류 용어이므로 이를 식별하고 변수로 저장해야 합니다.

get_header() 줄 아래에 다음을 추가하세요:

으아악

해당 $animalcat 변수는 나중에 사용할 수 있습니다.

출력 페이지 제목

아카이브에는 현재 기본 제목이 없으므로 방금 정의한 변수를 사용하여 기본 제목을 추가해야 합니다.

<div id="content"> 태그를 연 후 다음을 추가하세요: 으아악 <h3>두 번째 카테고리의 용어를 알아보세요</h3> <p>다음으로 두 번째 카테고리에 대한 용어 목록을 가져와야 합니다. 방금 추가한 코드 아래에 다음을 삽입하세요. </p> 으아악 <p>이것은 모든 용어의 목록을 가져와서 배열에 저장합니다. <code class="inline">'hide_empty'를 사용하면 빈 용어가 표시되는 것을 방지할 수 있습니다. 하지만 곧 알게 되겠지만 이는 게시물이 전혀 없는 용어에 대한 쿼리만 방지하고 현재 쿼리된 분류 용어에 대한 게시물이 없는 용어에 대한 쿼리는 방지합니다.

创建循环

现在创建一个将为每个术语运行的循环:

<?php
// now run a query for each animal family
foreach ( $terms as $term ) {

    // Define the query
	$args = array(
		'post_type' => 'animal',
		'animal_cat' => $animalcat->slug,
		'habitat' => $term->slug
	);
	$query = new WP_Query( $args );
			
	// output the term name in a heading tag				
	echo'<h2>' . $term->name . ' habitat</h2>';
	
	// output the post titles in a list
	echo '<ul>';
	
		// Start the Loop
		while ( $query->have_posts() ) : $query->the_post(); ?>

		<li class="animal-listing" id="post-<?php the_ID(); ?>">
			<a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
		</li>
		
		<?php endwhile;
	
	echo '</ul>';
	
	// use reset postdata to restore orginal query
	wp_reset_postdata();

} ?>

对此的一些说明:

  • 为每个术语定义一个新查询。
  • 查询的参数包括第二个分类中的术语 ($term) 和当前正在查询的术语 ($animalcat)。
  • 如果您的分类法仅适用于一种帖子类型,您可以省略 'post_type' 参数,但我更愿意包含它以防万一。
  • $term 变量用于使用 $term->name 输出每个部分的标题。

现在保存您的模板文件并查看您的动物家族术语之一的分类存档:

按第二个分类法的术语列出分类目录:Taxonomy Archives

为每个查询添加帖子检查

目前,如您所见,模板正在输出空列表。通过检查每个查询是否有帖子可以轻松解决此问题。

在循环中包含以下内容:

if ( $query->have_posts() ) {

}

你的循环现在看起来像这样:

if ( $query->have_posts() ) {
    
	// output the term name in a heading tag				
	echo'<h2>' . $term->name . ' habitat</h2>';
	
	// output the post titles in a list
	echo '<ul>';
	
		// Start the Loop
		while ( $query->have_posts() ) : $query->the_post(); ?>

		<li class="animal-listing" id="post-<?php the_ID(); ?>">
			<a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
		</li>
		
		<?php endwhile;
	
	echo '</ul>';
}

如果查询没有任何帖子,这会阻止 WordPress 运行循环,从而删除那些空标题。现在我的存档页面如下所示:

按第二个分类法的术语列出分类目录:Taxonomy Archives

好多了!

为第二个分类创建模板文件

最后一步是为第二个分类的档案创建模板文件。

复制您的第一个模板文件并将其重命名为 taxonomy-habitat.php。编辑它以使术语正确。我需要对文件进行的编辑是:

  • 调整文件顶部的注释,使其准确
  • $animalcat 变量的名称更改为 $habitat (您可以通过为该变量指定一个更通用的名称来避免此问题 - 但不要将其称为 $term 因为您在其他地方使用它)
  • 编辑 <h1></h1> 标题,以便它使用 $habitat 变量来输出当前查询术语的名称(我还在此处添加了一些解释性文本)这是可选的)
  • 更改 get_terms() 函数的第一个参数,使其使用 animal_cat 术语,而不是 habitat 术语。
  • 编辑查询参数,本质上是交换 'animal_cat''habitat' 的值。
  • 编辑循环中的 <h2></h2> 内容以引用家庭而不是栖息地。

这意味着我的新模板文件如下所示:

<?php
/*
WpTutsPlus tutorial for creating archive to display posts by mutiple taxonomy terms
Archive template for habitat taxonomy
*/
?>

<?php get_header(); ?>

<?php
// get the currently queried taxonomy term, for use later in the template file
$habitat = get_queried_object();
?>

    <div id="main-content" class="main-content">

	<div id="primary" class="content-area">
		<div id="content" class="site-content" role="main">

<header class="archive-header">
	<h1 class="archive-title">
		Habitat - <?php echo $habitat->name; ?>
	</h1>
</header><!-- .archive-header -->

<?php //start by fetching the terms for the animal_cat taxonomy
$terms = get_terms( 'animal_cat', array(
	'hide_empty' => 0
) );
?>

<?php
// now run a query for each animal family
foreach( $terms as $term ) {

	// Define the query
	$args = array(
		'post_type' => 'animal',
		'animal_cat' => $term->slug,
		'habitat' => $habitat->slug
	);
	$query = new WP_Query( $args );
	
	if( $query->have_posts() ) {
		
		// output the term name in a heading tag				
		echo'<h2>' . $term->name . ' family</h2>';
		
		// output the post titles in a list
		echo '<ul>';
		
			// Start the Loop
			while ( $query->have_posts() ) : $query->the_post(); ?>
	
			<li class="animal-listing" id="post-<?php the_ID(); ?>">
				<a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
			</li>
			
			<?php endwhile;
		
		echo '</ul>';
	}
			
	
	
	// use reset postdata to restore orginal query
	wp_reset_postdata();

} ?>
			
		</div><!-- #content -->
	</div><!-- #primary -->
	<?php get_sidebar( 'content' ); ?>
</div><!-- #main-content -->

<?php
get_sidebar();
get_footer();

进行这些更改后,保存新模板文件并检查您的存档之一:

按第二个分类法的术语列出分类目录:Taxonomy Archives

您现在拥有第二个分类的页面,其工作方式与第一个分类相同。

摘要

在本教程中,您学习了一种使用多种分类法显示数据的方法。您可以通过以下两种方式之一使用第三种分类法来进一步实现这一点:

  1. 重复获取术语、定义查询并为第二个术语之后的第三个术语运行循环的过程,以便您拥有两个单独的列表。
  2. 使用所有三个术语合并您的数据,方法是使用每个 $term 变量,其方式与 $habitat$animalcat 变量类似并在现有的 foreach() 语句中添加额外的 foreach() 语句。然后,您需要考虑如何使用列表或网格来布局结果数据。

为什么不尝试一下呢?

위 내용은 두 번째 분류법의 용어별로 범주 나열: 분류법 아카이브의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
이전 기사:WP_Query 마스터하기: 루프의 힘 활용하기다음 기사:WP_Query 마스터하기: 루프의 힘 활용하기

관련 기사

더보기