如何添加外观和行为与帖子完全相同的自定义帖子类型?

时间:2014-05-08 作者:Troy Templeman

我想添加一个自定义的帖子类型“News”,它有自己的标签和类别,并且我想向我的函数中添加适当的代码。php文件。

我尝试过插件,但在新帖子类型的帖子列表中没有标签和类别列。

谢谢

3 个回复
最合适的回答,由SO网友:Tom J Nowell 整理而成

创建帖子类型

register_post_type 是你的朋友在这里。这就是插件etc用来注册post类型的内容。

例如,这里有一个基本的图书帖子类型:

function codex_custom_init() {
    $args = array(
      \'public\' => true,
      \'label\'  => \'Books\'
    );
    register_post_type( \'book\', $args );
}
add_action( \'init\', \'codex_custom_init\' );
如果你不想写代码,有一个网站会给你一个表单,回答一些问题,并在最后给你代码进行复制粘贴,这里有两个这样的网站:

  • http://themergency.com/generators/
  • http://generatewp.com/post-type/
    • 创建标记和类别的自定义分类法类似,您需要其中两个用于标记和类别。

      register_taxonomy 是注册自定义分类的函数。以下是上述书籍示例的流派分类:

      add_action( \'init\', \'create_book_tax\' );
      
      function create_book_tax() {
          register_taxonomy(
              \'genre\',
              \'book\',
              array(
                  \'label\' => __( \'Genre\' ),
                  \'rewrite\' => array( \'slug\' => \'genre\' ),
                  \'hierarchical\' => true,
              )
          );
      }
      
      您的两个分类法将相同,除了:

      标签将是分层的,类别将不会有不同的名称和标签。您需要分别命名它们,这样它们就不会与现有的帖子类型和分类法冲突,所以新闻类别,而不是类别,新闻标签,而不是标签。

      具有易于填写表单的网站也有分类生成器。

      帖子列表中的列

      v3。5将此属性添加到register_taxonomy:

      show_admin_column
      
      如果设置为true,它将根据需要添加一列,显示每篇文章的条款

      代码应该驻留在哪里可能在插件中,而不是在主题中。如果他们在主题中,而用户切换了主题,他们就会丢失所有数据。

      注意事项

      自定义帖子类型没有日期存档,添加日期存档是一件不平凡且困难的事情,如果你在问你所问的问题,这远远超出了你目前的技能。在自定义帖子类型中需要日期存档通常意味着您正在做一些本应使用普通帖子的事情,并且在设计中的某个地方犯了错误。

      还有一个帖子类型/分类前缀,你不能给他们与帖子完全相同的URL结构。如果你这样做了,它们会发生冲突,你的新闻帖子类型或标准帖子都会是404。(如果你这样做了,我建议你只使用帖子,你甚至有一个单独的新闻帖子类型,这都是不对的)。

      编写完代码后,刷新永久链接以测试归档文件将提供的404。

      我想你真正想要的是如何在管理菜单和前端菜单中隐藏帖子。为此,我提出了以下替代解决方案:

      将帖子重命名为新闻而不创建全新的帖子类型使用自定义分类法或类别将新闻与其他内容区分开来

SO网友:TomC

当您定义自定义帖子类型时,您将决定是否所有这些属性都可用,因此我猜您做得不对。

阅读此处的文档:http://codex.wordpress.org/Function_Reference/register_post_type

我发现到目前为止,生成自定义帖子类型的最简单方法是这个CPT生成器:

http://themergency.com/generators/wordpress-custom-post-types/

SO网友:s_ha_dum

Match the Core registration for the "Post" post type:

20          register_post_type( \'post\', array(
21                  \'labels\' => array(
22                          \'name_admin_bar\' => _x( \'Post\', \'add new on admin bar\' ),
23                  ),
24                  \'public\'  => true,
25                  \'_builtin\' => true, /* internal use only. don\'t use this when registering your own post type. */
26                  \'_edit_link\' => \'post.php?post=%d\', /* internal use only. don\'t use this when registering your own post type.
*/
27                  \'capability_type\' => \'post\',
28                  \'map_meta_cap\' => true,
29                  \'hierarchical\' => false,
30                  \'rewrite\' => false,
31                  \'query_var\' => false,
32                  \'delete_with_user\' => true,
33                  \'supports\' => array( \'title\', \'editor\', \'author\', \'thumbnail\', \'excerpt\', \'trackbacks\', \'custom-fields\',
\'comments\', \'revisions\', \'post-formats\' ),
34          ) );
您显然需要注册不同的帖子类型名称,并注意标记为“仅供内部使用”的两行。把那些拿走。否则,这将为您提供核心“Post”Post类型的克隆。

结束

相关推荐