You are here:  Home » PHP » How to Create Custom Single Post Templates in WordPress

您想在WordPress中创建自定义单个帖子模板吗?自定义单个帖子模板允许您轻松为帖子选择不同的模板。在本文中,我们将向您展示如何在WordPress中轻松创建自定义单个帖子模板。

How to create custom single post template in WordPress

注意:本教程要求您编辑WordPress主题文件。如果您之前没有这样做,那么请查看我们的教程,了解如何在WordPress中复制和粘贴代码。

什么时候需要自定义单个帖子模板?

有时您可能希望对您网站上的某些帖子有不同的外观。例如,您可能希望为特定类别中的精选文章或故事使用不同的模板。

这是您需要在WordPress中创建自定义单个帖子模板的地方。

这与创建自定义页面模板非常相似。您可以从帖子编辑屏幕中选择模板。

话虽如此,让我们来看看如何在WordPress中轻松创建自定义单个帖子模板。

在WordPress中创建自定义单个帖子模板

首先,您需要在计算机上打开纯文本编辑器(如记事本)并将以下代码粘贴到其中:

<?php
/*
 * Template Name: Featured Article
 * Template Post Type: post, page, product
 */
 
 get_header();  ?>

此代码定义一个名为“特色文章”的新模板并使其可用于帖子,页面和产品发布类型。

您可以在桌面上将此文件另存为 wpb-single-post.php

接下来,您需要使用FTP客户端将其上传到当前的WordPress主题文件夹。

之后,您可以登录您的WordPress管理区域并创建或编辑帖子。在帖子编辑屏幕上向下滚动一下,您会注意到新的“帖子属性”元框,其中包含选择模板的选项。

Select your custom single post template

您将在此处看到“特色文章”自定义模板。

现在你的模板基本上是空的,所以选择它只会显示一个白色的屏幕。

让我们解决这个问题。

最简单的方法是从主题的single.php文件中复制代码并将其用作起点。

打开single.php文件,然后复制 get_header()线。

在最后将此代码粘贴到wpb-single-post.php文件中。现在,您可以保存此文件并将其上传回服务器。

但是,这与您当前的单个帖子模板完全相同。您现在可以开始更改自定义单个帖子模板。

您可以添加自己的自定义CSS类,删除侧边栏,创建全宽模板或任何您想要的内容。

基于类别

创建自定义单个帖子模板想要使用基于类别的自定义单个帖子模板吗?例如,旅行类别中的帖子可以具有与摄影中的帖子不同的布局。

以下是您可以这样做的方法。

首先,您需要将此代码添加到主题的functions.php文件或特定于站点的插件中。

/*
* Define a constant path to our single template folder
*/
define(SINGLE_PATH, TEMPLATEPATH . "/single");

/**
* Filter the single_template with our custom function
*/
add_filter("single_template", "my_single_template");

/**
* Single template function which will choose our template
*/
function my_single_template($single) {
global $wp_query, $post;

/**
* Checks for single template by category
* Check by category slug and ID
*/
foreach((array)get_the_category() as $cat) :

if(file_exists(SINGLE_PATH . "/single-cat-" . $cat->slug . ".php"))
return SINGLE_PATH . "/single-cat-" . $cat->slug . ".php";

elseif(file_exists(SINGLE_PATH . "/single-cat-" . $cat->term_id . ".php"))
return SINGLE_PATH . "/single-cat-" . $cat->term_id . ".php";

endforeach;
}

此代码首先检查WordPress是否正在请求单个帖子。如果是,则告诉WordPress在WordPress主题的/ single /文件夹中查找模板。

现在您需要添加此代码定义的模板文件。

使用cPanel中的FTP客户端或文件管理器连接到您的WordPress网站,然后转到/ wp-content / themes / your-theme-folder /。

在当前主题文件夹中,您需要创建一个名为“single”的新文件夹。

现在您需要打开此文件夹并在其中创建一个新文件。来吧,将此文件命名为single-cat– {category-slug}。将{category-slug}替换为您的实际类别slug。

例如,如果您有一个名为“新闻”的类别,那么您将创建single-cat-news.php文件。如果您有一个名为“旅行提示”的类别,则创建一个模板single-cat-travel-tips.php,依此类推。

Creating single post template for categories

现在这些模板文件将完全为空。作为起点,您可以从主题文件夹中复制single.php文件的内容,并将其粘贴到每个模板中。

您现在可以编辑这些模板以进行所需的更改。

完成后,您可以访问您的网站并查看帖子。它将使用您为此帖子归档的类别创建的模板。

现在让我们假设您有两个类别的新闻和旅行提示。WordPress将自动显示“新闻”的模板,因为它首先按字母顺序显示。

另一方面,如果您在某个类别中提交了帖子而没有为该类别创建模板,那么WordPress将回退到您主题的默认single.php模板。

为特定作者创建自定义单个帖子模板

让我们假设您希望特定作者撰写的帖子在您的网站上看起来不同。你可以使用我们为类别显示的相同技术来做到这一点。

首先,您需要将此代码添加到主题的functions.php文件或特定于站点的插件中。

/**
* Define a constant path to our single template folder
*/
define(SINGLE_PATH, TEMPLATEPATH . "/single");

/**
* Filter the single_template with our custom function
*/
add_filter("single_template", "my_single_author_template");

/**
* Single template function which will choose our template
*/
function my_single_author_template($single) {
global $wp_query, $post;

/**
* Checks for single template by author
* Check by user nicename and ID
*/
$curauth = get_userdata($wp_query->post->post_author);

if(file_exists(SINGLE_PATH . "/single-author-" . $curauth->user_nicename . ".php"))
return SINGLE_PATH . "/single-author-" . $curauth->user_nicename . ".php";

elseif(file_exists(SINGLE_PATH . "/single-author-" . $curauth->ID . ".php"))
return SINGLE_PATH . "/single-author-" . $curauth->ID . ".php";

}

接下来,您需要使用cPanel中的FTP或文件管理器连接到您的网站,然后转到/ wp-content / themes / your-theme-folder /。

如果您还没有在其中创建一个名为/ single /的文件夹,那么现在让我们继续创建它。

在此文件夹中,您需要使用模板名称中作者的用户名创建模板。例如,single-author-johnsmith.php

此模板将为空,因此您可以复制粘贴主题的single.php模板的内容并将其用作起点。

您现在可以访问您的网站以查看特定作者创建的帖子。它现在将使用您创建的模板。

目前为止就这样了。

我们希望本文能帮助您学习如何在WordPress中创建自定义单个帖子模板。您可能还想查看WordPress functions.php文件的非常有用的技巧列表。

评论被关闭。