You are here:  Home » PHP » 如何在WordPress中创建类别模板

您是否访问过每个类别具有不同布局的网站?在WordPress主题开发中,通常的做法是为类别,标签,自定义帖子类型和分类法使用不同的模板。通过为类别创建模板,您可以在类别页面上添加特定功能。例如,您可以允许用户订阅类别,添加类别图像,显示类别说明以及为每个类别选择不同的布局。在本指南中,我们将向您展示如何在WordPress中创建类别模板。

类别页面的WordPress模板层次结构

WordPress拥有强大的模板系统。您可以通过为网站的不同部分使用不同的模板来创建WordPress主题。 WordPress在显示任何页面时以预定义的层次顺序查找模板。要显示类别页面,它将按此顺序查找模板。

categoryslug.php→category-id.php→category.php→archive.php→index.php

首先,WordPress将使用类别slug查找特定于该特定类别的模板,例如,品类design.php模板将用于显示“设计”类别。如果它没有找到category-slug模板,那么WordPress将查找具有类别id的模板品类6.php。之后,它将寻找通常的通用类别模板category.php。如果没有通用类别模板,那么WordPress将寻找通用存档模板,即archive.php。最后它将使用的index.php用于显示类别的模板。

在WordPress中创建类别模板

让我们首先看一下典型的category.php模板。

<?php
/**
* A Simple Category Template
*/

get_header(); ?> 

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

<?php 
// Check if there are any posts to display
if ( have_posts() ) : ?>

<header class="archive-header">
<h1 class="archive-title">Category: <?php single_cat_title( "", false ); ?></h1>


<?php
// Display optional category description
 if ( category_description() ) : ?>
<div class="archive-meta"><?php echo category_description(); ?></div>
<?php endif; ?>
</header>

<?php

// The Loop
while ( have_posts() ) : the_post(); ?>
<h2><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></h2>
<small><?php the_time("F jS, Y") ?> by <?php the_author_posts_link() ?></small>

<div class="entry">
<?php the_content(); ?>

 <p class="postmetadata"><?php
  comments_popup_link( "No comments yet", "1 comment", "% comments", "comments-link", "Comments closed");
?></p>
</div>

<?php endwhile; 

else: ?>
<p>Sorry, no posts matched your criteria.</p>


<?php endif; ?>
</div>
</section>


<?php get_sidebar(); ?>
<?php get_footer(); ?>

现在让我们假设您有一个名为“Design”的类别,其类别为slugdesign”,并且您希望以不同于其他类别的方式显示此类别。为此,您需要为该特定类别创建模板。去外观»编辑。从右侧的主题文件列表中,单击category.php,如果你没有category.php文件,那就找吧archive.php。如果您找不到这些模板中的任何一个,那么您很可能使用WordPress主题框架,本教程可能对您没用。我们建议您参考您正在使用的特定框架。

如果找到上面的文件,则复制所有内容category.php并将它们粘贴到记事本等文本编辑器中。将此文件另存为品类design.php

使用FTP客户端连接到您的网站。转到/ wp-content / themes / your-current-theme /并将category-design.php文件上传到您的主题目录。现在,您对此模板所做的任何更改都只会显示在此特定类别的存档页面中。使用此技术,您可以根据需要为多个类别创建模板。只需使用category- {category-slug} .php作为文件名。您可以通过访问WordPress管理区域中的类别部分找到类别slugs。

这是一个例子品类slug.php模板,注意我们使用了与category.php相同的模板而几乎没有变化。由于我们已经知道它将用于的类别,我们可以手动添加标题,描述或任何其他细节。另请注意我们已经使用过&lt;?php the_excerpt(); ?&GT;代替&lt;?php the_content(); ?&GT;。看看为什么我们认为使用帖子摘要或摘录而不是完整帖子是一个好主意。

<?php
/**
* A Simple Category Template
*/

get_header(); ?> 

<section id="primary" class="site-content">
<div id="content" role="main">
<?php 
// Check if there are any posts to display
if ( have_posts() ) : ?>

<header class="archive-header">
<?php
// Since this template will only be used for Design category
// we can add category title and description manually.
// or even add images or change the layout
?>

<h1 class="archive-title">Design Articles</h1>
<div class="archive-meta">
Articles and tutorials about design and the web.
</div>
</header>

<?php

// The Loop
while ( have_posts() ) : the_post();
<h2><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></h2>
<small><?php the_time("F jS, Y") ?> by <?php the_author_posts_link() ?></small>

<div class="entry">
<?php the_excerpt(); ?>

 <p class="postmetadata"><?php
  comments_popup_link( "No comments yet", "1 comment", "% comments", "comments-link", "Comments closed");
?></p>
</div>

<?php endwhile; // End Loop

else: ?>
<p>Sorry, no posts matched your criteria.</p>
<?php endif; ?>
</div>
</section>

<?php get_sidebar(); ?>
<?php get_footer(); ?>

如果您不想使用categoryslug模板,则可以使用category-id模板为特定类别ID创建模板(如何在WordPress中查找类别ID)。

为类别使用条件标签

在为主题创建模板时,您需要问自己,您真的需要一个单独的模板来执行您想要做的事情吗?在某些情况下,您想要进行的更改并不太复杂,可以使用通用模板中的条件标记来实现,例如category.php甚至archive.php。

WordPress支持主题作者可以在其模板中使用的许多条件标记。一个这样的条件标签是is_category()。使用此条件标记,您可以更改模板以在条件匹配时显示不同的输出。例如,假设您有一个名为“精选”的精选帖子的类别。现在,您要在此特定类别的类别存档页面上显示一些额外信息。为此,请在category.php文件中添加此代码&lt;?php if(have_posts()):?&gt;


<header class="archive-header">

<?php if(is_category( "Featured" )) : ?>
	<h1 class="archive-title">Featured Articles:</h1>
<?php  else: ?>
	<h1 class="archive-title">Category Archive: <?php single_cat_title(); ?> </h1>
<?php endif; ?>

</header>

学习WordPress主题开发并不是一夜之间就能实现的。但是,您可以通过调整模板并进行较小的更改来开始学习。这是一种风险,你会比你想要的更频繁地破坏事物,但最终做到正确的快乐会让你保持动力。

评论被关闭。