Come Aggiungere i Tag a un Tipo di Post Personalizzato?

19 ago 2012, 01:24:44
Visualizzazioni: 124K
Voti: 46

Ho un tipo di post personalizzato chiamato portfolio e sto cercando di aggiungergli la tassonomia dei tag, come posso fare?

2
Commenti

@chifliiiii se faccio così, le Categorie e i Tag sono gli stessi utilizzati per gli Articoli. Come posso ottenere Categorie e Tag esclusivi per il nuovo tipo di contenuto?

Troy Templeman Troy Templeman
8 mag 2014 19:36:36

@chifliiiii Come visualizzare i tag nel template?

Max Max
22 mar 2017 01:54:13
Tutte le risposte alla domanda 9
1
102

Oppure aggiungi semplicemente:

'taxonomies' => array('post_tag')

Un array di tassonomie registrate come category o post_tag che verranno utilizzate con questo tipo di post. Può essere usato al posto di chiamare direttamente register_taxonomy_for_object_type(). Le tassonomie personalizzate devono comunque essere registrate con register_taxonomy().

all'array $args nel file functions.php dove crei il custom post type con register_post_type(). Questo permetterà a un custom post type di utilizzare le stesse categorie e/o tag dei post predefiniti.

12 lug 2013 06:06:43
Commenti

Per favore aggiungi una spiegazione alla tua risposta: perché potrebbe risolvere il problema?

fuxia fuxia
12 lug 2013 06:54:48
7
27

Come questo: (Dove dice "portfolio" è dove registri la tassonomia a un post type)

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

//crea due tassonomie, generi e tag per il post type "tag"
function create_tag_taxonomies() 
{
  // Aggiungi nuova tassonomia, NON gerarchica (come i tag)
  $labels = array(
    'name' => _x( 'Tag', 'nome generale della tassonomia' ),
    'singular_name' => _x( 'Tag', 'nome singolare della tassonomia' ),
    'search_items' =>  __( 'Cerca Tag' ),
    'popular_items' => __( 'Tag Popolari' ),
    'all_items' => __( 'Tutti i Tag' ),
    'parent_item' => null,
    'parent_item_colon' => null,
    'edit_item' => __( 'Modifica Tag' ), 
    'update_item' => __( 'Aggiorna Tag' ),
    'add_new_item' => __( 'Aggiungi Nuovo Tag' ),
    'new_item_name' => __( 'Nome del Nuovo Tag' ),
    'separate_items_with_commas' => __( 'Separa i tag con le virgole' ),
    'add_or_remove_items' => __( 'Aggiungi o rimuovi tag' ),
    'choose_from_most_used' => __( 'Scegli tra i tag più utilizzati' ),
    'menu_name' => __( 'Tag' ),
  ); 

  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' ),
  ));
}
?>
19 ago 2012 02:07:03
Commenti

@JoeBobby probabilmente varrebbe la pena dare un'occhiata alla pagina del Codex di WordPress per la registrazione delle tassonomie per avere una migliore comprensione di tutte le opzioni disponibili: http://codex.wordpress.org/Function_Reference/register_taxonomy

Stephen S. Stephen S.
8 mag 2014 19:41:54

Nota che questo sta creando una nuova tassonomia chiamata 'tag' invece di aggiungere la tassonomia esistente 'post_tag' al custom post type.

Jake Jake
28 giu 2017 20:53:05

@chifliiiii come ottenere questi tag nella pagina singola del post con i link dei tag, come creare un template per la pagina dei tag

Dinesh Dinesh
25 giu 2018 12:05:06

Sono d'accordo con Jake, penso che questo non risolva il problema. La risposta di @Marcus dovrebbe essere quella accettata.

Craig Wayne Craig Wayne
13 lug 2018 00:20:09

come accedere al template per questa tassonomia 'tag'? Qual è il nome del template?

emir emir
8 giu 2021 11:04:17

Mi manca ancora la casella dei tag nella schermata di modifica del CPT

Fanky Fanky
29 lug 2021 14:10:43

La casella dei tag nella schermata di modifica dell'amministratore è apparsa aggiungendo 'show_in_rest' => true, nei parametri di register_taxonomy()! 8-o

Fanky Fanky
29 lug 2021 14:37:49
Mostra i restanti 2 commenti
0
10

Utilizza questo codice:

add_action( 'init', 'gp_register_taxonomy_for_object_type' );
function gp_register_taxonomy_for_object_type() {
    register_taxonomy_for_object_type( 'post_tag', 'portfolio' );
};
8 ott 2014 13:16:29
4

Metodo 1 (dalle risposte sopra: https://wordpress.stackexchange.com/a/106211/38771)

Diversi tipi di post utilizzeranno gli stessi dati dei "Tag" del tipo di post predefinito "post".

  • Vantaggi

    • Tutto (dovrebbe) funzionare immediatamente con una sola riga

    • Tutti i tuoi tag in un unico posto nel CMS

  • Svantaggi

    • Dimentica un CMS ben strutturato/facile da usare - l'elenco dei Tag nella pagina dei custom post type mostrerà tutti i Tag (non solo quelli utilizzati negli articoli del custom post type) con il conteggio sbagliato...
    • Le modifiche a un Tag influenzeranno sia gli articoli del tipo "post" predefinito che quelli del custom post type (Eliminare un Tag lo cancellerà in entrambi i tipi di articoli)
    • Più difficile (se non impossibile) impostare qualsiasi funzionalità distinta per i Tag: descrizioni diverse, campi personalizzati, immagini, ecc. (almeno non senza molto codice personalizzato oltre al codice core di Wordpress)...

Metodo 2 (dalle risposte sopra: https://wordpress.stackexchange.com/a/62263/38771)

Diversi tipi di post utilizzano configurazioni/dati diversi per i "Tag".

  • Vantaggi

    • Creare funzionalità diverse/chiaramente distinte relative ai tag: template frontend, capacità, filtri di query, azioni)
    • Assegnare dati diversi relativi ai tag: dati dei campi o persino campi personalizzati
    • Gestire meglio i Tag nel CMS
      • Esempio: Modificare/Eliminare un tag del "post" non influenzerà il tag (similmente nominato/sluggato) per gli altri tipi di post
  • Compromesso

    Un po' più di codice da configurare

In verità, sono un modo estremamente potente per raggruppare vari elementi in tutti i modi possibili. https://codex.wordpress.org/Taxonomies#Custom_Taxonomies

9 ott 2018 20:07:10
Commenti

Ecco un caso per il Metodo 1: Un grande sito sportivo, che copre numerosi argomenti/leghe/sport con tag come "NBA", "NHL", "Basketball", "Olimpiadi", "Steroidi", "College", ecc. Non ha alcun senso duplicare e gestire quello che potrebbero essere +100 tag e 4 tipi di articoli (tipo di articolo predefinito e 3 tipi di articoli personalizzati). Per quanto riguarda gli svantaggi, se i dati del conteggio dei tag sono così speciali, allora si può creare una visualizzazione personalizzata per quello. Per quanto riguarda tag personalizzati simili per tipo di articolo, non sembra esserci alcuna necessità evidente finora (sto cercando di pensarne una... servono esempi).

Kalnode Kalnode
12 gen 2019 02:23:24

Sì, ma non ci saranno automaticamente permalink diversi per i tag a seconda del tipo di articolo. Un tag "playoffs" avrà "/tag/playoffs" per tutti i tipi di articoli. Poi devi impostare regole di riscrittura o usare parametri GET per creare permalink diversi... Con una tassonomia diversa per ogni tipo di articolo, ogni tag "playoffs" per ogni tipo di articolo avrà il suo permalink, che può essere personalizzato usando la Gerarchia dei Template di Wordpress. Questo è utile se le diverse pagine "playoffs" sono diverse per NBA, NHL... Ho lavorato su un sito con quel livello di personalizzazione per le tassonomie (campi personalizzati, immagine della tassonomia, descrizione)

P-S P-S
14 gen 2019 15:53:08

Capisco cosa intendi. Quindi, se si opta per tassonomie di tag diverse per CPT, che ne dici di fare in modo che quando aggiungi/modifichi un termine in una tassonomia, venga modificato anche nelle altre tassonomie, cioè termini univoci sincronizzati tra le tassonomie. Ad esempio, definisci "Basketball" una volta, diciamo nella tassonomia dei tag degli articoli, poi una volta che salvi, "Basketball" viene creato in modo univoco anche nelle altre tassonomie per i CPT. Quindi inserisci/modifichi un tag una volta e la modifica si riflette su più tassonomie di tag. Alla fine ottieni la gestione dei tag in un'unica destinazione, più una situazione di permalink più desiderabile.

Kalnode Kalnode
15 gen 2019 03:15:46

Sì, sarebbe davvero un ottimo metodo se il sito condivide le stesse informazioni di base delle tassonomie (titolo) per più CPT, oltre a offrire la possibilità di personalizzare ulteriormente queste tassonomie (campi personalizzati, immagini, ecc.) per diversi CPT. Ottimo!

P-S P-S
18 gen 2019 13:44:19
1

Prova a utilizzare questo codice, potrebbe esserti utile

add_action( 'init', 'create_client_tax' );
function create_client_tax() {
    register_taxonomy( 
            'client_tag', //tassonomia dei tag
            'client',  // Il tuo post type
            array( 
                'hierarchical'  => false, 
                'label'         => __( 'Tag', CURRENT_THEME ), 
                'singular_name' => __( 'Tag', CURRENT_THEME ), 
                'rewrite'       => true, 
                'query_var'     => true 
            )  
        );
}
6 mar 2018 20:26:19
Commenti

Una versione semplificata della risposta già accettata. Inoltre, questa aggiunge una tassonomia completamente nuova invece di utilizzare la tassonomia 'post_tag' esistente.

acidrums4 acidrums4
11 lug 2018 20:36:04
0

Questo funziona sempre correttamente. rif: https://developer.wordpress.org/plugins/post-types/registering-custom-post-types/

/**
* Crea tassonomia tag per il CPT portfolio
*/
if ( ! function_exists( 'ns_register_team_category' ) ) {
function ns_register_team_category() {

   $labels = array(
    'name' => __( 'Tag', 'ns' ),
    'singular_name' => __( 'Tag', 'ns' ),
    'search_items' =>  __( 'Cerca Tag' ),
    'popular_items' => __( 'Tag Popolari' ),
    'all_items' => __( 'Tutti i Tag' ),
    'parent_item' => null,
    'parent_item_colon' => null,
    'edit_item' => __( 'Modifica Tag' ),
    'update_item' => __( 'Aggiorna Tag' ),
    'add_new_item' => __( 'Aggiungi Nuovo Tag' ),
    'new_item_name' => __( 'Nome Nuovo Tag' ),
    'separate_items_with_commas' => __( 'Separa i tag con virgole' ),
    'add_or_remove_items' => __( 'Aggiungi o rimuovi tag' ),
    'choose_from_most_used' => __( 'Scegli tra i tag più utilizzati' ),
    'menu_name' => __( 'Tag' ),
   );

   $args = array(
    'label' => __( 'Tag', 'ns' ),
    'labels' => $labels,
    'public' => true,
    'publicly_queryable' => true,
    'hierarchical' => true,
    'show_ui' => true,
    'show_in_menu' => true,
    'show_in_nav_menus' => true,
    'query_var' => true,
    'rewrite' => array( 'slug' => 'tag', 'with_front' => false, ),
    'show_admin_column' => false,
    'show_in_rest' => true,
    'rest_base' => 'tag',
    'rest_controller_class' => 'WP_REST_Terms_Controller',
    'show_in_quick_edit' => true,
    'update_count_callback' => '_update_post_term_count',
);
register_taxonomy( 'tag', array( 'portfolio' ), $args );
}
add_action( 'init', 'ns_register_team_category', 0 );
}
28 ago 2020 14:12:42
1

Puoi semplicemente aggiungere una tassonomia già registrata a un tipo di oggetto, vedi il codice qui sotto.

 /**
 * Funzione per aggiungere la selezione di Tag al Custom Post Type
 */
 function ns_reg_tag() {
    register_taxonomy_for_object_type('post_tag', 'Custom_Post_Type');
 }
add_action('init', 'ns_reg_tag');
3 mar 2021 13:44:55
Commenti

Questa è la soluzione migliore al momento.

Marcio Duarte Marcio Duarte
6 apr 2022 03:21:12
0

Sebbene la risposta di Marcus risolva la maggior parte del problema, tieni presente che non è una soluzione completa. La risposta di chifliiiii è più completa ma, come menzionato nei commenti, non riutilizza la tassonomia dei tag già esistente.

Secondo l'OP, una soluzione deve utilizzare "la tassonomia dei tag" e non "una tassonomia dei tag". Ecco perché ritengo che la risposta di chifliiiii sia errata.

D'altra parte, penso che la risposta di Marcus sia parzialmente corretta, lo stesso vale per risposte simili come quella pubblicata da Giovanni Putignano. Spiegherò di seguito il perché.


Una soluzione completa

Registrando il tuo custom post type alla tassonomia post_tag, utilizzando il metodo suggerito da Marcus o Giovanni, non verranno visualizzati i post taggati del tuo custom post type nella pagina archivio dei tag. Verranno visualizzati solo i post del post type post, perché il template predefinito dei tag viene generato con una query che punta solo al post type post. Per risolvere questo problema, devi modificare la query con l'hook pre_get_posts.

Questo è un modo generico per risolvere il problema (non chiedermi perché questo non sia implementato nel core):

add_action('pre_get_posts', function($query) {
  // Questo targetterà le query utilizzate per generare il template dell'archivio dei tag.
  // Puoi rimuovere la condizione `is_main_query()` se vuoi ottenere i post
  // per tag al di fuori del loop.
  if (!is_admin() && is_tag() && $query->is_main_query()) {
    // Imposterà qualcosa come: Array( 'post', 'portfolio' )
    $types = get_taxonomy('post_tag')->object_type;

    // Modifica la query per utilizzare solo i tipi registrati alla
    // tassonomia `post_tag`.
    $query->set('post_type', $types);
  }
});
9 set 2020 15:25:00
0

Nel mio caso il seguente codice ha funzionato.

register_taxonomy( 'events_tag',array('events'),  array(
        'hierarchical' => false, 
        'label' => 'Tag',
        'show_admin_column' => true, 
        'singular_label' => 'Tag del tuo tipo di articolo',
        'query_var'         => true,
        'rewrite' => array( 'slug' => 'events_tag' ),
        'show_in_rest'       => true,
        'rest_base'          => 'events_tag',
        'rest_controller_class' => 'WP_REST_Terms_Controller',  
        )
    );
22 ott 2022 14:15:03