自定义帖子类型与有条件地显示特定术语的元框?

时间:2013-10-09 作者:its_me

The Problem: 我的个人博客位于example.com, 我想创建一个书架,在那里我可以分享我读过或打算读的所有书籍。我可以通过两种方式做到这一点:

创建一个名为“Books”的类别,以显示我添加的最新书籍(如archive)。

创建自定义分类法“主题”,对书籍进行分类。

使用自定义模板文件类别图书。php和分类主题。php,并使用in_category( \'books\' ) 单件。php定制外观(使其看起来更像书架)。

我博客的永久链接结构已经是这样的:/%category%/%postname%/ 类别基础被剥离。因此,图书档案和图书(post)的URL如下所示:http://example.com/books/http://example.com/books/book-name/, 分别地

使用Advanced Custom Fields 插件可在编辑页面中有条件地显示一些自定义元框,即仅当选中“Books”类别时。

创建一个名为“Books”的自定义帖子类型\'rewrite\' => array(\'slug\' => \'books\'). 因此,图书档案和图书(post)的URL如下所示:http://example.com/books/http://example.com/books/book-name/, 分别地

创建自定义分类法“主题”,对书籍进行分类。

使用自定义模板文件归档书籍。php,单本书。php和分类主题。php定制外观(使其看起来更像书架)。

使用Advanced Custom Fields 插件,用于在编辑页面中为自定义帖子类型“Books”显示一些自定义元框。

这两种方法中,哪一种是实现我追求的目标的更好方法?(我指的是应该采取的方式。)

我仍然不清楚自定义帖子类型是否用于此目的;即使阅读了以下内容:

1 个回复
最合适的回答,由SO网友:gmazzap 整理而成

我将从结尾开始。

Post格式是一种只有9个术语的分类法。它们存在的唯一原因是为主题开发人员设置一种标准。一旦术语只有9个,并且用户不能更改术语名称(用户只能在创建帖子时通过单选按钮选择),主题开发人员可以创建模板文件,如"taxonomy-post_format-gallery.php" 确保此模板将用于存档具有“图库”格式的帖子。也可以使用has_post_format 具有特定术语的函数:无法使用标准类别或自定义分类法进行此操作,因为术语由用户选择。

E、 g.如果我创建一个主题并在某处放置一个条件if ( has_category(\'foo\') ) 而且我的主题被其他人使用,我不能确定我的主题的用户是否会将类别“foo”用于他们的帖子,在countrary上,我可以使用条件if ( has_post_format(\'gallery\') ) 因为格式“gallery”是标准格式。

简而言之,帖子格式是一种具有标准术语名称的类别,其存在是为了帮助主题开发人员(尤其是销售或分发主题的开发人员)根据帖子的内容,以在WP中存在的数千个主题中共享的方式对帖子进行样式化:即使用户切换主题,如果两个主题都支持帖子格式,那么帖子也会以正确的方式进行样式化。

需要注意的是,帖子格式只能分配给标准帖子,不能分配给CPT。

在您的情况下,这本书不是9个术语之一,因此您可以排除post格式。

现在,转到选择自定义分类法与自定义帖子类型。

首先,你不应该根据url来决定你网站的结构,在国家,你应该调整你的url以尽可能地“镜像”网站结构。

尽管如此,您应该思考什么是分类法,什么是post类型。

帖子通常是信息容器。职位类型旨在将这些信息组织成不同的类型。分类法可用于将具有相同特征的相同类型或不同类型的信息分组。

通常,一个信息只能是one type 但可以有different characteristics: WordPress中的类型应该通过post类型处理,特征应该通过分类法处理。

就你而言,book is a type of information. 有一些特点。一个是主题,你想通过分类法正确地处理它,事实上一本书可以有多个主题,但不能是一本书,同时也不能是另一种类型的信息。

总之,您应该为图书使用CPT,并使用分类法将它们分组到主题中。

关于URL,我认为标准example.com/books/ 用于图书归档和example.com/books/a-book-name 除非你有特殊需要,否则这本书可能是最好的。

结束

相关推荐

Admin Theme customization

我遵循wordpress codex网站上关于通过插件创建管理主题的说明。我激活了插件,但我的样式表没有包含在<head>.. 这是我的代码:add_action( \'admin_init\', \'kd_plugin_admin_init\' ); add_action( \'admin_menu\', \'kd_plugin_admin_menu\' ); function kd_plugin_admin_init() { /* Register