如何在WordPress中创建自定义的帖子类型

通常人们错误地将WordPress归类为博​​客平台。 在过去的几年中,WordPress已经发展成为一个强大的内容管理系统。 默认情况下,WordPress以邮件和页面作为主要内容类型。 但是,您可以根据需要创建任意数量的自定义内容类型,这些自定义内容类型称为 自定义帖子类型 。 在这篇文章中,我们将向您展示如何在WordPress中创建自定义的帖子类型。 我们也会告诉你如何像亲一样使用它们。

什么是WordPress的自定义帖子类型?

自定义帖子类型是内容类型,如帖子和页面。 由于WordPress从一个简单的博客平台发展成为一个强大的CMS,术语post坚持不懈。 但是,帖子类型可以是任何类型的内容。 默认情况下,WordPress附带这些帖子类型:

  • 岗位
  • 附件
  • 调整
  • 导航菜单

您可以创建自己的自定义帖子类型,然后根据需要调用它们。 例如,如果您运行电影评论网站,则可能需要创建电影评论帖子类型。 这个帖子类型可以有不同的自定义字段,甚至自己的自定义类别结构。 其他职位类型的例子有:投资组合,推荐,产品等

我什么时候需要自定义帖子类型?

查看我们的文章,了解您何时需要WordPress中的自定义文章类型或分类法。

现场

您还会注意到,我们正在使用自定义分类法,而不是类别或标签。

创建自定义帖子类型 – 简单的方法

在WordPress中创建自定义帖子类型的最简单方法是使用插件。 这种方法是建议初学者,因为它是安全和超级简单。

首先你需要做的是安装并激活Custom Post Type UI插件。 激活后,插件将在您的WordPress管理菜单中添加一个新的菜单项 CPT用户界面

现在去 CPT用户界面»添加新 创建一个新的自定义帖子类型。

自定义发布UI插件的添加新页面

Custom Post Type UI插件还允许您创建自定义分类。

这就是为什么添加新的自定义帖子类型页面被分成两列。 在你的左边,你有你需要填写的表单来创建你的自定义文章类型。 在你的右边,你有一个表格来创建一个自定义的分类标准,如果你需要的话。

在自定义帖子类型列中,首先需要为自定义帖子类型提供一个名称。 该名称不能超过20个字符,例如 电影,配方,交易,词汇表等

添加您的新自定义帖子类型

在下一个字段中,您需要为自定义帖子类型提供一个标签。 这个标签将出现在你的WordPress管理栏中,就像帖子和页面一样。 它也需要是复数有意义的。 例如 电影,食谱,交易,术语表等

之后,您需要为您的标签提供一个单数形式。 这个单数形式将被WordPress用来显示说明和其他用户界面元素。

最后输入您的自定义帖子类型的说明。 这个描述只是用来描述你的帖子类型。

现在您可以点击“创建自定义帖子类型”按钮来添加新的自定义帖子类型。 就这样。

您也可以点击“高级标签选项”和“高级选项”链接为自定义帖子类型定制更多选项。

手动创建自定义帖子类型

使用插件的问题是,当插件被停用时,您的自定义帖子类型将消失。 这些自定义帖子类型中的任何数据都将保留在那里,但是您的自定义帖子类型将被取消注册,并且不能从管理区访问。

如果您正在客户端网站上工作,并且不想安装其他插件,则可以通过在主题的functions.php文件或特定于站点的插件中添加所需的代码来手动创建自定义帖子类型(请参阅:自定义帖子 类型辩论functions.php或插件)。

首先,我们将向您展示一个快速而充分的工作示例,以便您了解它是如何工作的。 看看这个代码:

//我们的自定义帖子类型函数
 函数create_posttype(){

 register_post_type('movies',
 // CPT选项
 阵列(
 'labels'=>数组(
 'name'=> __('Movies'),
 'singular_name'=> __('电影')
 )
 'public'=> true,
 'has_archive'=> true,
 'rewrite'=> array('slug'=>'movies'),
 )
 );
 }
 / /挂钩我们的功能,主题设置
 add_action('init','create_posttype'); 

这段代码做的是注册一个帖子类型 '电影' 与一系列的参数。 这些参数是我们的自定义帖子类型的选项。 这个数组有两个部分,第一部分是标签,它本身就是一个数组。 第二部分包含其他参数,如公开可见性,存档,和slu that将用于这个职位类型的网址。

现在让我们来看一段详细的代码,为自定义帖子类型添加更多选项。

/ *
 *创建一个功能来创建我们的CPT
 * /

 函数custom_post_type(){

 //为自定义帖子类型设置UI标签
 $ labels = array(
 'name'=> _x('Movies','Post Type General Name','twentythirteen'),
 'singular_name'=> _x('Movie','Post Type Singular Name','twentytheen'),
 'menu_name'=> __('Movies','twentytheeneen'),
 'parent_item_colon'=> __('Parent Movie','twentytheeneen'),
 'all_items'=> __(“所有电影”,“二十三”),
 'view_item'=> __('观看电影','二十十三'),
 'add_new_item'=> __('Add New Movie','twentytheeneen'),
 'add_new'=> __('Add New','twentytheeneen'),
 'edit_item'=> __('编辑电影','twentytheeneen'),
 'update_item'=> __('更新电影','twentytheeneen'),
 'search_items'=> __('搜索电影','twentytheeneen'),
 'not_found'=> __('Not Found','twentytheen'),
 'not_found_in_trash'=> __('垃圾箱里找不到','二十十三'),
 );

 //为自定义帖子类型设置其他选项

 $ args = array(
 'label'=> __('movies','twentytheen'),
 'description'=> __('电影新闻和评论','twentytheen'),
 'labels'=> $ labels,
 //在Post Editor中支持此功能
 'supports'=> array('title','editor','excerpt','author','thumbnail','comments','revisions','custom-fields'),
 //您可以将此CPT与分类或自定义分类关联。
 '分类法'=>数组('流派'),
 / *分级CPT就像Pages一样,可以有
 *父母和孩子的物品。 非等级CPT
 *就像帖子。
 * /
 'hierarchical'=> false,
 'public'=> true,
 'show_ui'=> true,
 'show_in_menu'=> true,
 'show_in_nav_menus'=> true,
 'show_in_admin_bar'=> true,
 'menu_position'=> 5,
 'can_export'=> true,
 'has_archive'=> true,
 'exclude_from_search'=> false,
 'public_queryable'=> true,
 'capability_type'=>'页面',
 );

 //注册您的自定义帖子类型
 register_post_type('movies',$ args);

 }

 / *挂钩到'init'的行动,使该功能
 *包含我们的帖子类型注册不是
 *不必要的执行。
 * /

 add_action('init','custom_post_type',0); 

正如你所看到的,我们已经用自己的代码在自定义帖子类型中添加了更多的选项。 它将增加更多的功能,如支持修订,特色图片,自定义字段等。

我们还将此自定义帖子类型与称为类型的自定义分类关联。 另请注意,我们已将分层值设置为false的部分。 如果您希望自定义帖子类型的行为类似于页面,则可以将此值设置为true。

还要注意二十三十三的重复使用,这就是所谓的文本域。 如果您的主题是翻译准备好的,并且您希望自定义帖子类型进行翻译,那么您将需要提及您的主题使用的文本域。 你可以在里面找到你的主题的文本域 style.css文件 文件在你的主题目录中。 文本域将在文件的标题中提及。

在您的网站上显示自定义帖子类型

WordPress内置支持显示您的自定义帖子类型。 一旦你添加了几个项目到你的新的自定义文章类型,是时候把它们显示在你的网站上。

有几个方法可以使用,每个方法都有自己的好处。

使用默认存档模板显示自定义帖子类型

首先,你可以简单地去 外观»菜单 并添加一个自定义链接到你的菜单。 此自定义链接是您的自定义帖子类型的链接。 如果您使用搜索引擎优化友好的永久链接,那么您的CPT的网址很可能是这样的:

http://example.com/movies

如果你不使用搜索引擎优化友好的永久链接,那么你的自定义帖子类型的URL将是这样的:

http://example.com/?post_type=movies

用您自定义的帖子类型名称替换example.com与您自己的域名和电影。 保存你的菜单,然后访问你的网站的前端。 您将看到您添加的新菜单,当您点击它时,它将使用主题中的archive.php模板文件显示您的自定义帖子类型存档页面。

为CPT存档和单个条目使用自定义模板

如果您不喜欢自定义帖子类型的存档页面的外观,则可以使用专用的自定义帖子类型存档模板。 要做到这一点,只需在主题目录中创建一个新文件并命名即可 归档movies.php 。 将电影替换为您的自定义帖子类型的名称。

为了开始创建,您可以复制主题的内容 archive.php 文件进入 归档movies.php 模板,然后开始修改它以满足您的需求。 现在,只要访问您的自定义帖子类型的存档页面,就会使用此模板来显示它。

同样,您也可以为您的帖子类型的单个条目显示创建一个自定义模板。 要做到这一点,你需要创建 单movies.php 在你的主题目录中。 不要忘记用自定义帖子类型的名称替换电影。

你可以通过复制你的主题的内容开始 single.php中 模板成 单movies.php 模板,然后开始修改它以满足您的需求。

在首页显示自定义帖子类型

使用自定义帖子类型的一个好处是,它使您的自定义内容类型远离您的常规帖子。 但是,如果您希望在常规文章中显示它们,则可以将此代码添加到主题的functions.php文件或特定于站点的插件中:

add_action('pre_get_posts','add_my_post_types_to_query');

 函数add_my_post_types_to_query($ query){
 if(is_home()&& $ query-> is_main_query())
 $ query-> set('post_type',array('post','movies'));
 返回$查询;
 } 

不要忘记更换 电影 与您的自定义帖子类型。

查询自定义帖子类型

如果你熟悉编码,并想在你的模板中运行循环查询,那么这里是怎么做的(相关:什么是循环?)。

通过查询数据库,您可以从自定义帖子类型中检索项目。

'movies','posts_per_page'=> 10);
 $ the_query = new WP_Query($ args);
 ?> have_posts()):?> have_posts()):$ the_query-> the_post();  ?> 

在这个代码中,首先我们在新的WP_Query类的参数中定义了帖子类型和每页文章。 之后,我们跑我们的查询,检索帖子,并显示在循环内。

在小部件中显示自定义帖子类型

你会注意到在WordPress中有一个默认的小部件来显示最近的帖子。 但是这个小部件不允许你选择一个自定义的帖子类型。 如果你想显示一个小部件中新创建的帖子类型的最新条目呢? 有一个简单的方法来做到这一点。

首先你需要做的是安装并激活Ultimate Posts Widget插件。 激活后,只需去 外观»小工具 并将Ultimate Posts小部件拖放到侧边栏。

这个强大的小部件将允许您显示任何帖子类型的最新帖子。 您还可以通过阅读更多链接显示文章摘要,甚至可以在帖子标题旁显示精选图片。 通过选择所需的选项并选择自定义帖子类型来配置小部件。 之后,保存您的更改并在您的网站上查看正在运行的小部件。

更多高级自定义帖子类型调整

还有更多,你可以做你的自定义职位类型。 您可以学习在主RSS提要中添加自定义帖子类型,或者为每个自定义帖子类型创建一个单独的提要。 如果您正在使用Disqus评论系统,那么请检查如何在WordPress中为自定义帖子类型禁用Disqus。