Termini della tassonomia personalizzata non visualizzati nell'editor Gutenberg

6 mar 2019, 19:11:22
Visualizzazioni: 13.5K
Voti: 15

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 );

Screenshot del problema della tassonomia mancante in Gutenberg

// 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' );
2
Commenti

E come è registrato il tuo CPT?

Krzysiek Dróżdż Krzysiek Dróżdż
6 mar 2019 19:36:28

Ho modificato il mio post

Hanane Hanane
6 mar 2019 19:45:55
Tutte le risposte alla domanda 6
3
38

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,
    )
  );
14 apr 2019 23:31:50
Commenti

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

Faye Faye
26 giu 2019 21:08:50

Questa è la risposta corretta

user1676224 user1676224
29 nov 2019 17:08:33

Penso che forse c'è stato un momento in cui la prima risposta "selezionata" era una soluzione, ma nel 2020, sembra che 'show_in_rest' => true, sia l'elemento mancante se il tuo problema è che viene visualizzato nell'editor classico ma non nel Block Editor.

jerclarke jerclarke
28 ago 2020 21:36:10
6

Modificare lo slug della tassonomia funziona nel mio caso. Non conosco il motivo preciso, ma funziona.

12 mar 2019 00:03:38
Commenti

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

Hanane Hanane
12 mar 2019 12:05:25

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.

Mehmood Ahmad Mehmood Ahmad
12 mar 2019 12:16:30

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

Hanane Hanane
13 mar 2019 18:53:40

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

Mehmood Ahmad Mehmood Ahmad
13 mar 2019 19:08:14

scusa non l'avevo vista, per me è chiaro grazie

Hanane Hanane
13 mar 2019 19:09:24

Non dovresti cambiare lo slug, non è una soluzione. Ma è perfetto se vuoi compromettere il tuo SEO. Devi aggiungere 'show_in_rest' => true, ai tuoi argomenti.

user1676224 user1676224
29 nov 2019 17:10:18
Mostra i restanti 1 commenti
1

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.

20 gen 2020 09:52:49
Commenti

+1 per una risposta ben diagnosticata e informativa.

dj.cowan dj.cowan
15 mar 2020 09:37:19
1

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.

6 mar 2019 19:54:07
Commenti

grazie per la tua risposta. Ho provato così ma non ha risolto il problema.

Hanane Hanane
6 mar 2019 20:01:53
3

Hai aggiunto qualche termine alla tassonomia "Tipi"?
Penso non ci sia nulla di sbagliato nel codice. Aggiungi un "Tipo" cliccando sul link mostrato nello screenshot 'aggiungi una nuova categoria'. Dopo aver aggiunto alcuni "Tipi" potrai selezionarli.

6 mar 2019 20:13:38
Commenti

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

Hanane Hanane
8 mar 2019 16:29:59

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.

Qaisar Feroz Qaisar Feroz
8 mar 2019 19:53:32

Sì, funziona se non usi Gutenberg. ma quando aggiungo 'show_in_rest' => true al mio CPT per avere l'editor Gutenberg, non funziona. questo è il problema

Hanane Hanane
9 mar 2019 11:08:38
1

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.

9 ott 2019 17:09:55
Commenti