Comment ajouter des balises au type de publication personnalisé?


28

J'ai un type de publication personnalisé appelé portfolioet j'essaie d'y ajouter la taxonomie des balises, comment faire?


@chifliiiii si je fais cela, les catégories et les balises sont les mêmes que celles utilisées pour les publications. Comment obtenir des catégories et des tags exclusifs au nouveau type de publication?
Troy Templeman

@chifliiiii Comme afficher les balises dans le modèle?
Max

Réponses:


15

Comme ceci: (où il est dit "portfolio" est l'endroit où vous enregistrez la taxonomie à un type de poste

add_action( 'init', 'create_tag_taxonomies', 0 );

//create two taxonomies, genres and tags for the post type "tag"
function create_tag_taxonomies() 
{
  // Add new taxonomy, NOT hierarchical (like tags)
  $labels = array(
    'name' => _x( 'Tags', 'taxonomy general name' ),
    'singular_name' => _x( 'Tag', 'taxonomy singular name' ),
    'search_items' =>  __( 'Search Tags' ),
    'popular_items' => __( 'Popular Tags' ),
    'all_items' => __( 'All Tags' ),
    'parent_item' => null,
    'parent_item_colon' => null,
    'edit_item' => __( 'Edit Tag' ), 
    'update_item' => __( 'Update Tag' ),
    'add_new_item' => __( 'Add New Tag' ),
    'new_item_name' => __( 'New Tag Name' ),
    'separate_items_with_commas' => __( 'Separate tags with commas' ),
    'add_or_remove_items' => __( 'Add or remove tags' ),
    'choose_from_most_used' => __( 'Choose from the most used tags' ),
    'menu_name' => __( 'Tags' ),
  ); 

  register_taxonomy('tag','portfolio',array(
    'hierarchical' => false,
    'labels' => $labels,
    'show_ui' => true,
    'update_count_callback' => '_update_post_term_count',
    'query_var' => true,
    'rewrite' => array( 'slug' => 'tag' ),
  ));
}
?>

@JoeBobby, il vaudrait probablement la peine de consulter la page WordPress Codex pour enregistrer les taxonomies afin d'avoir une meilleure idée
Stephen S.

8
Juste une note que cela crée une toute nouvelle taxonomie appelée 'tag' au lieu d'ajouter la taxonomie 'post_tag' existante au type de message personnalisé.
Jake

@chifliiiii comment obtenir ces balises en une seule page avec des liens de balises, comment créer un modèle de page de balises
Dinesh

1
Je suis d'accord avec Jake, j'ai l'impression que cela ne résout pas le problème. La réponse de @Marcus doit être celle marquée comme acceptée.
Craig Wayne

58

Ou ajoutez simplement:

'taxonomies' => array('post_tag')

Un tableau de taxonomies enregistrées comme categoryou post_tagqui seront utilisées avec ce type de message. Cela peut être utilisé au lieu d'appeler register_taxonomy_for_object_type()directement. Les taxonomies personnalisées doivent encore être enregistrées register_taxonomy().

dans le $argstableau du functions.phpfichier où vous créez le type de publication personnalisé avec register_post_type().


2
Veuillez ajouter une explication à votre réponse: pourquoi cela pourrait-il résoudre le problème?
fuxia

5

Utilisez ceci:

add_action( 'init', 'gp_register_taxonomy_for_object_type' );
function gp_register_taxonomy_for_object_type() {
    register_taxonomy_for_object_type( 'post_tag', 'portfolio' );
};

1

Méthode 1 (à partir des réponses ci-dessus: /wordpress//a/106211/38771 )

Différents types de publication utiliseront les mêmes données "Tags" que le type de "publication" par défaut.

  • Avantages

    • Tout (devrait) fonctionner hors de la boîte avec une seule ligne

    • Tous vos tags en un seul endroit dans le CMS

  • Inconvénients

    • Oubliez un CMS bien structuré / facile à utiliser - la liste des balises sur la page des types de publication personnalisés affichera toutes les balises (pas seulement les balises utilisées dans les articles de type de publication personnalisé) avec le mauvais nombre ...
    • Les modifications apportées à une balise affecteront les articles "post" par défaut ainsi que les articles de type de publication personnalisés (Supprimer une balise la supprime dans les deux types d'articles)
    • Plus difficile (peut-être impossible) de configurer une fonctionnalité de balise distincte: différentes descriptions, champs personnalisés, images, etc. (du moins pas sans beaucoup de codage personnalisé au-dessus du code Wordpress de base) ...

Méthode 2 (à partir des réponses ci-dessus: /wordpress//a/62263/38771 )

Différents types de messages utilisent différentes configurations / données de «balises».

  • Avantages

    • Créez des fonctionnalités liées aux balises différentes / clairement distinctes : modèles frontaux, capacités, filtres de requête, actions)
    • Attribuer différentes données liées aux balises : données de champs ou même champs personnalisés
    • Gérez mieux les balises dans le CMS
      • Exemple : la modification / suppression d'une balise "post" n'affectera pas la balise (portant le même nom / slugged) pour les autres types de publication
  • Troquer

    Un peu plus de code à configurer

En vérité, ils sont un moyen extrêmement puissant de regrouper divers éléments de toutes sortes de façons. https://codex.wordpress.org/Taxonomies#Custom_Taxonomies


Voici un cas pour la méthode 1: un grand site Web de sport, couvrant de nombreux sujets / ligues / sports avec des étiquettes, par exemple "NBA", "NHL", "Basketball", "Olympics", "Steroids", "College", etc It doesn ' Il n'est pas logique de dupliquer et de gérer ce qui pourrait être +100 balises et 4 types de publication (type de publication par défaut et 3 types de publication personnalisés). En ce qui concerne les inconvénients, si les données de comptage de balises sont si spéciales, une vue personnalisée peut être créée pour cela. En ce qui concerne les balises personnalisées similaires par type de publication, il ne semble pas y avoir de besoin évident pour l'instant (essayant de penser à une ... besoin d'exemples).
MarsAndBack

Oui, mais il n'y aura pas automatiquement différents permaliens de balises pour différents types de publication. Un tag "playoffs" aura "/ tag / playoffs" pour tous les types de publication. Ensuite, vous devez configurer des règles de réécriture ou utiliser des paramètres GET pour créer différents permaliens ... Avec une taxonomie différente pour chaque type de publication, chaque balise "playoffs" pour chaque type de publication aura son propre permalien, qui peut être personnalisé à l'aide du modèle Wordpress. Hiérarchie. C'est bien si différentes pages "séries éliminatoires" sont différentes pour la NBA, la LNH ... J'ai travaillé sur un site avec ce niveau de personnalisation pour les taxonomies (champs personnalisés, image de taxonomie, description)
PS

1
Je vois ce que tu dis. Donc, si vous utilisez différentes taxonomies de balises par CPT, pourquoi ne pas le faire lorsque vous ajoutez / modifiez un terme dans une taxe, il est modifié dans d'autres taxes, c'est-à-dire des termes uniques synchronisés entre les taxes. Par exemple, définissez "Basketball" une fois, disons dans la taxe Post tags, puis une fois que vous appuyez sur Enregistrer, puis "Basketball" est également créé de manière unique à travers d'autres taxes pour les CPT. Donc, saisissez / modifiez une balise une fois, et le changement se reflète sur plusieurs taxes de balise. En fin de compte, vous obtenez la gestion des balises dans une destination, plus une situation de permalien plus souhaitable.
MarsAndBack

Oui, ce serait en fait une excellente méthode si le site partage les mêmes informations de base sur les taxonomies (titre) pour plusieurs CPT, tout en donnant la possibilité de personnaliser davantage ces taxonomies (champs personnalisés, images, etc.) pour différents CPT. Agréable!
PS

0

Il suffit d'utiliser ce code, il peut vous aider

 add_action( 'init', 'create_client_tax' );
function create_client_tax() {
    register_taxonomy( 
            'client_tag', //your tags taxonomy
            'client',  // Your post type
            array( 
                'hierarchical'  => false, 
                'label'         => __( 'Tags', CURRENT_THEME ), 
                'singular_name' => __( 'Tag', CURRENT_THEME ), 
                'rewrite'       => true, 
                'query_var'     => true 
            )  
        );
}

Une version dépouillée de la réponse déjà acceptée. En outre, cela ajoute également une toute nouvelle taxonomie plutôt que d'utiliser la taxonomie «post_tag» existante.
acidrums4
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.