web-dev-qa-db-ja.com

カスタム投稿タイプのタグ分類の登録

実際の投稿タイプはカテゴリをサポートしており、タグのサポートも追加したいと思います。

私はこのコードを持っています:

register_taxonomy(
    'category_' . $slug,
    array( $slug ), 
    array(
        'hierarchical' => true,
        'label' => "$slug Categories",
        'singular_label' => "$slug Category",
        'rewrite' => true
    )
);

そのため、タグをサポートするためにこれを複製しようとしましたが、機能していません。

これはポートフォリオの投稿タイプのコード全体です。

$portfolio_slugs = get_option("zeitgeist_portfolio_slug");
if(is_array($portfolio_slugs))
    foreach ( $portfolio_slugs as $slug ){
        add_action('init', 'create_portfolio');
        register_taxonomy("category_".$slug, array($slug), 
        array("hierarchical" => true, "label" => "$slug Categories", "singular_label" => "$slug Category", "rewrite" => true));
        register_taxonomy("tags_".$slug, array($slug), array("hierarchical" => false, "label" => "$slug Tags", "singular_label" => "$slug Tags", "rewrite" => true));



function create_portfolio() {
    $portfolio_slugs = get_option("zeitgeist_portfolio_slug");
    $portfolio_counter = 0;
    $portfolio_names = get_option("zeitgeist_portfolio_name");
    foreach ( $portfolio_slugs as $slug ){
        $portfolio_args = array(
            'label' => __("Portfolio '".$portfolio_names[$portfolio_counter]."'"),
            'singular_label' => __($portfolio_names[$portfolio_counter++]),
            'public' => true,
            'show_ui' => true,
            'capability_type' => 'post',
            'hierarchical' => false,
            'rewrite' => array('slug' => $slug, 'with_front' => true),
            'supports' => array('title', 'editor', 'thumbnail', 'author', 'comments', 'excerpt')
        );
        register_post_type($slug,$portfolio_args);
    }
}

function portfolioSingleRedirect(){
    global $wp_query;
    $queryptype = $wp_query->query_vars["post_type"];
    $portfolio_slugs = get_option("zeitgeist_portfolio_slug");
    if(is_array($portfolio_slugs))
        foreach ( $portfolio_slugs as $slug ){
            if ($queryptype == $slug){
                if (have_posts()){
                    global $pcat;
                    $pcat = "category_".$slug;
                    require(TEMPLATEPATH . '/single_portfolio.php');
                    die();
                }else{
                    $wp_query->is_404 = true;
                }
            }
        }
}
add_action("template_redirect", 'portfolioSingleRedirect');
2
agis

コードが作成するカテゴリはカスタム分類法であり、デフォルトの投稿category分類法ではありません。

とにかく、デフォルトの投稿タグ分類法のサポートを追加したい場合は、名前はpost_tagであり、$portfolio_argstaxonomies引数で追加できます。

$portfolio_args = array(
    'taxonomies' => array( 'post_tag' ),
    // all of your other portfolio args
);

詳しくはCodexの register_post_type を参照してください。

5
Milo

他の人が言っているように'taxonomies' => array( 'post_tag' )を追加しなければなりませんが、管理ページに表示されるように分類ボックスの 'supports'引数に 'taxonomies'を追加する必要があります。

'supports' => array('title','editor','thumbnail','taxonomies')
0
Spartacus