web-dev-qa-db-fra.com

Enregistrement de la taxonomie des balises pour un type d'article personnalisé

Les catégories de support de type de message réelles et je veux ajouter également un support pour les balises.

J'ai ce code:

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

J'essayais donc de dupliquer cela pour les balises de support, mais cela ne fonctionne pas.

Voici le code complet pour le type de publication de portefeuille:

$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

Les catégories que votre code crée sont une taxonomie personnalisée, et non la taxonomie post category par défaut.

Quoi qu'il en soit, si vous souhaitez prendre en charge la taxonomie par défaut des étiquettes de publication, le nom est post_tag et peut être ajouté via l'argument taxonomies dans votre $portfolio_args:

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

Voir register_post_type in Codex pour plus d'informations.

5
Milo

Vous devez ajouter 'taxonomies' => array( 'post_tag' ) comme d'autres l'ont dit, mais vous devez également ajouter 'taxonomies' dans l'argument 'supports' pour que les zones de taxonomie apparaissent dans la page d'administration, comme suit

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