Termini della tassonomia personalizzata non visualizzati nell'editor Gutenberg
Ho creato una tassonomia personalizzata che ho associato al mio CPT. Entrambi compaiono nella dashboard, il problema è che quando aggiungo contenuto e voglio scegliere un termine dalla lista della tassonomia personalizzata, non appare alcun valore (nessuna lista, nessuna checkbox...). Sto usando WordPress 5.1. Ecco il codice aggiunto a functions.php:
function type_custom_taxonomy() {
$labels = array(
'name' => _x( 'Types', 'taxonomy general name' ),
'singular_name' => _x( 'Type', 'taxonomy singular name' ),
'menu_name' => __( 'Types' ),
);
register_taxonomy('types',array('action'), array(
'labels' => $labels,
'hierarchical' => true,
'public' => true,
'show_ui' => true,
'show_admin_column' => true,
'show_in_rest' => true,
'show_tagcloud' => false,
));
}
add_action( 'init', 'type_custom_taxonomy', 0 );
// CPT
function action_post_type() {
register_post_type( 'action',
array(
'labels' => array(
'name' => __( 'Actions' ),
'singular_name' => __( 'Action' )
),
'public' => true,
'has_archive' => true,
'show_in_rest' => true,
'supports' => array('title', 'editor','thumbnail'),
'taxonomies' => array('types')
)
);
}
add_action( 'init', 'action_post_type' );

Ho affrontato lo stesso problema e l'ho risolto nel modo seguente
Devi aggiungere 'show_in_rest' => true,
sia per post_type che per le tassonomie nell'ultima riga dell'array come mostrato di seguito:
register_post_type(
'portfolio',
array(
'labels' => $labels,
'exclude_from_search' => false,
'has_archive' => true,
'public' => true,
'publicly_queryable' => false,
'rewrite' => false,
'can_export' => true,
'show_in_nav_menus' => true,
'supports' => array('title', 'editor', 'thumbnail', 'comments', 'page-attributes','excerpt'),
'show_in_rest' =>true,
)
);
Per la Tassonomia
register_taxonomy(
'portfoliocat',
'portfolio',
array(
'hierarchical' => true,
'show_in_nav_menus' => true,
'labels' =>array(),
'query_var' => true,
'rewrite' => array('slug' => 'portfoliocat'),
'show_in_rest' => true,
)
);

L'avevo nel mio CPT, ma non nella registrazione della tassonomia, questo ha risolto il problema per me.

Vuoi dire che devo aggiungere 'rewrite' => array( 'slug' => 'type' ), Non ha funzionato per me, Puoi mostrarmi il codice per favore

No, non ho provato a usare rewrite ma ho cambiato lo slug nella chiamata register_taxonomy in questo modo register_taxonomy( 'kt-types', array('action'), $args). L'ho provato localmente e funziona per me.

Sì, funziona quando cambio types in action-types. Grazie mille mahmood. Puoi scrivere la tua risposta come soluzione così posso accettarla

Felice di sentire che funziona. Ho già aggiunto la mia risposta come soluzione. Vuoi che la spieghi meglio?

Anche io riesco a riprodurre questo problema. Aggiungere show_in_rest
nella funzione register_taxonomy
, come suggerito da molti, sarebbe normalmente la risposta corretta, ma non la soluzione completa nel tuo caso. Questo perché l'endpoint REST types
è già utilizzato da WordPress stesso. https://example.com/wp-json/wp/v2/types
restituirà i tipi di post registrati e quindi Gutenberg non riesce a interpretarlo correttamente. Vedi https://developer.wordpress.org/rest-api/reference/post-types/
Quindi, cambiare lo slug è probabilmente la strada migliore da percorrere. Se il tuo sito è già online, potresti considerare l'utilizzo di alcune regole di riscrittura per evitare impatti negativi sulla SEO.
Tuttavia, anche se cambi lo slug, devi comunque aggiungere show_in_rest
quando utilizzi Gutenberg.

La mia ipotesi è che sia causato dalle priorità...
Entrambe le tue azioni utilizzano la stessa priorità. Quindi se la funzione type_custom_taxonomy
viene chiamata per prima, il post type action
non esiste ancora in quel momento.
Proverei qualcosa del genere:
function action_post_type() {
register_post_type( 'action',
array(
'labels' => array(
'name' => __( 'Azioni' ),
'singular_name' => __( 'Azione' )
),
'public' => true,
'has_archive' => true,
'show_in_rest' => true,
'supports' => array('title', 'editor','thumbnail'),
)
);
$labels = array(
'name' => _x( 'Tipi', 'taxonomy general name' ),
'singular_name' => _x( 'Tipo', 'taxonomy singular name' ),
'menu_name' => __( 'Tipi' ),
);
register_taxonomy('types',array('action'), array(
'labels' => $labels,
'hierarchical' => true,
'public' => true,
'show_ui' => true,
'show_admin_column' => true,
'show_in_rest' => true,
'show_tagcloud' => false,
));
}
add_action( 'init', 'action_post_type' );
In questo modo puoi essere sicuro che il CPT venga registrato prima della tassonomia e puoi assegnare quella tassonomia a quel CPT.

sì, è il problema che sto riscontrando, non mostra l'elenco dei termini che ho già aggiunto. Quindi sì, posso aggiungere un nuovo termine ma se voglio modificare il mio CPT non ho l'elenco dei miei termini

Ho provato il tuo codice sul mio setup e funziona senza problemi. Vedi qui. Forse qualche altra parte del tuo codice sta creando questo problema.

Posso riprodurre lo stesso problema.
Vede la Tab, ma nessuna voce. Quindi il parametro show_in_rest
non è la soluzione ed era già configurato correttamente.
Il problema è una risposta vuota dalla Rest-API. Questo non accade su un'installazione pulita.
Procedi (su un'istanza locale) con i tuoi plugin, disattivali uno per uno.
Controlla http://domain.test/wp-json/wp/v2/taxonomyname
in una finestra separata per vedere se influisce sull'output.
Nel mio caso era il plugin "User Access Manager" con l'impostazione predefinita "Taxonomies settings"->Hide empty Taxonomies impostata su sì!
In questo caso seleziona la tua tassonomia sotto "Object type" e imposta l'opzione su No.

In caso di problemi con UAM: https://wordpress.org/support/topic/hide-empty-taxonomy-option-is-breaking-gutenberg-tabs/
