如何为自定义帖子类型添加单一类别?

时间:2014-01-28 作者:Let\'s Code

我正在添加名为journal 使用下面的代码可以很好地工作。但我现在需要为这个帖子类型添加一个类别。也就是说,我有两种类型的期刊类别normal journalfeatured journals. 但我的博客文章还有一些类别我只需要显示normal journalfeatured journals 在我的日志列表中,我如何才能做到这一点。我是Wordpress编码的新手。谢谢

function post_type_journal()
    {
        $args = array(
            \'labels\' => array(
                \'name\' => \'Journals\',
                \'singular_name\' => \'Journal\',
                \'add_new\' => \'Add new journal\',
                \'edit_item\' => \'Edit journal\',
                \'new_item\' => \'New journal\',
                \'view_item\' => \'View journal\',
                \'search_items\' => \'Search journal\',
                \'not_found\' => \'No journals found\',
                \'not_found_in_trash\' => \'No journals found in Trash\'
            ),
            \'public\' => true,
            \'supports\' => array(
                \'title\',
                \'editor\',
                \'author\',
                \'comments\'
            ),
            \'taxonomies\' => array(\'category\') // this is IMPORTANT
        );
        register_post_type(\'Journal\', $args);
    }
    add_action(\'init\',\'post_type_journal\');

3 个回复
最合适的回答,由SO网友:Brad Dalton 整理而成

您可以将此行添加到注册自定义帖子类型的代码中:

\'taxonomies\'   => array( \'category\' ),
或者,您可以添加分类法而不是类别:

add_action( \'init\', \'cpt_type_taxonomy\' );
function cpt_type_taxonomy() {

register_taxonomy( \'portfolio-type\', \'portfolio\',
    array(
        \'labels\' => array(
            \'name\'          => _x( \'Types\', \'taxonomy general name\', \'theme\' ),
            \'add_new_item\'  => __( \'Add New Portfolio Type\', \'theme\' ),
            \'new_item_name\' => __( \'New Portfolio Type\', \'theme\' ),
        ),
        \'exclude_from_search\' => true,
        \'has_archive\'         => true,
        \'hierarchical\'        => true,
        \'rewrite\'             => array( \'slug\' => \'portfolio-type\', \'with_front\' => false ),
        \'show_ui\'             => true,
        \'show_tagcloud\'       => false,
    )
);

}
然后将这一行添加到注册自定义帖子类型的代码中。

\'taxonomies\'   => array( \'portfolio-type\' ),
以下是注册自定义帖子类型的所有代码:

add_action( \'init\', \'register_custom_post_type\' );
function register_custom_post_type() {

register_post_type( \'portfolio\',
    array(
        \'labels\' => array(
            \'name\'          => __( \'Portfolio\', \'theme\' ),
            \'singular_name\' => __( \'Portfolio\', \'theme\' ),
        ),
        \'has_archive\'  => true,
        \'hierarchical\' => true,
        \'menu_icon\'    => \'dashicons-icon-name\',
        \'public\'       => true,
        \'rewrite\'      => array( \'slug\' => \'portfolio\', \'with_front\' => false ),
        \'supports\'     => array( \'title\', \'editor\', \'author\', \'thumbnail\', \'excerpt\', \'trackbacks\', \'custom-fields\', \'revisions\', \'page-attributes\' ),
        \'taxonomies\'   => array( \'portfolio-type\' ),

    )
);

}

SO网友:desmillicious

类别实际上是post post类型,因此您需要为您的Journal 岗位类型。

例如:

    function people_init() {
// create a new taxonomy
register_taxonomy(
    \'people\',
    \'journal\',
    array(
        \'label\' => __( \'People\' ),
        \'rewrite\' => array( \'slug\' => \'person\' ),
        \'capabilities\' => array(
            \'assign_terms\' => \'edit_guides\',
            \'edit_terms\' => \'publish_guides\'
        )
    )
);
}
add_action( \'init\', \'people_init\' );
请参见here 有关分类法的更多信息。

SO网友:Matthias Pfefferle

或者您可以使用

<?php register_taxonomy_for_object_type( \'category\', \'Journals\' ); ?>
将类别映射到自定义帖子类型。

http://codex.wordpress.org/Function_Reference/register_taxonomy_for_object_type

结束

相关推荐

具有自定义分类的自定义帖子类型中的WP_DROPDOWN_CATEGORIES

我有一个自定义的帖子类型,它有自己的分类法,基本上“show Vinces”是帖子类型,Vincement regions是分类法。看到一个场馆无法在多个地区存在,我删除了默认的metta框,并使用wp_dropdown_categories(). 分类法项目正在输出并按我所希望的方式显示,但它们不会被提交,并且下拉列表在提交后不会保留所选内容。我已经尽我所能地查看原始metabox的各种属性,并尝试将这些属性应用到下拉列表中,但到目前为止,我没有任何乐趣。我看过一些various WPSE上的帖子和ha