Termenii de taxonomie personalizată nu apar în lista Editorului Gutenberg

6 mar. 2019, 19:11:22
Vizualizări: 13.5K
Voturi: 15

Am creat o taxonomie personalizată pe care am asociat-o cu un CPT (Custom Post Type). Ambele apar în panoul de administrare, problema este că atunci când adaug conținut și vreau să aleg un termen din lista taxonomiei personalizate, nu apar valori (nicio listă, nici checkbox...). Folosesc WordPress 5.1. Iată codul adăugat în functions.php:

function type_custom_taxonomy() {

  $labels = array(
    'name' => _x( 'Types', 'taxonomy general name' ), // Numele general al taxonomiei
    'singular_name' => _x( 'Type', 'taxonomy singular name' ), // Numele singular al taxonomiei
    'menu_name' => __( 'Types' ), // Numele din meniu
  );    

  register_taxonomy('types',array('action'), array(
    'labels' => $labels,
    'hierarchical'               => true, // Taxonomie ierarhică
    'public'                     => true, // Vizibilă public
    'show_ui'                    => true, // Afișează interfața de administrare
    'show_admin_column'          => true, // Afișează coloana în administrare
    'show_in_rest'               => true, // Disponibilă în REST API
    'show_tagcloud'              => false, // Ascunde norul de taguri
  ));
}

add_action( 'init', 'type_custom_taxonomy', 0 ); // Inițializează taxonomia

captură de ecran a problemei

// CPT (Custom Post Type)
function action_post_type() {
  register_post_type( 'action',
    array(
      'labels' => array(
        'name' => __( 'Actions' ), // Numele plural al CPT
        'singular_name' => __( 'Action' ) // Numele singular al CPT
      ),
      'public' => true, // Post type public
      'has_archive' => true, // Permite arhive
      'show_in_rest'       => true, // Disponibil în REST API
      'supports'     => array('title', 'editor','thumbnail'), // Funcționalități suportate
      'taxonomies' => array('types') // Taxonomii asociate
    )
  );
}
add_action( 'init', 'action_post_type' ); // Inițializează post type-ul
2
Comentarii

Și cum este înregistrat CPT-ul tău?

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

Am editat postarea mea

Hanane Hanane
6 mar. 2019 19:45:55
Toate răspunsurile la întrebare 6
3
38

Am întâmpinat aceeași problemă ca și tine și am rezolvat-o în felul următor:

Trebuie să adaugi 'show_in_rest' => true, atât pentru post_type cât și pentru taxonomii în ultima linie a array-ului, astfel:

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

Pentru Taxonomie:

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
Comentarii

Am avut asta în CPT-ul meu, dar nu și în înregistrarea taxonomiei, asta a rezolvat problema pentru mine.

Faye Faye
26 iun. 2019 21:08:50

Acesta este răspunsul corect

user1676224 user1676224
29 nov. 2019 17:08:33

Cred că a existat un moment în care primul răspuns "selectat" era o soluție, dar în 2020, se pare că 'show_in_rest' => true, este lucrul care lipsește dacă problema ta este că apare în editorul clasic dar nu și în Block Editor.

jerclarke jerclarke
28 aug. 2020 21:36:10
6

Schimbarea slug-ului pentru taxonomie funcționează pentru mine. Nu știu motivul din spatele acestui lucru, dar merge.

12 mar. 2019 00:03:38
Comentarii

vrei să spui că trebuie să adaug 'rewrite' => array( 'slug' => 'type' ), Nu a funcționat pentru mine, Poți să-mi arăți codul, te rog?

Hanane Hanane
12 mar. 2019 12:05:25

Nu, nu am încercat să folosesc rewrite dar am schimbat slug-ul în apelul register_taxonomy astfel: register_taxonomy( 'kt-types', array('action'), $args). Am încercat local și funcționează pentru mine.

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

Da, funcționează când schimb types în action-types. Mulțumesc mult mahmood. Poți să scrii răspunsul tău ca soluție ca să-l pot accepta

Hanane Hanane
13 mar. 2019 18:53:40

Mă bucur că funcționează. Am adăugat deja răspunsul meu ca soluție. Dorești să îl explic mai detaliat?

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

scuze, nu l-am văzut, este clar pentru mine, mulțumesc

Hanane Hanane
13 mar. 2019 19:09:24

Nu ar trebui să modifici slug-ul, asta nu este o soluție. Dar este perfect dacă vrei să încurci SEO-ul tău. Trebuie să adaugi 'show_in_rest' => true, la argumentele tale.

user1676224 user1676224
29 nov. 2019 17:10:18
Arată celelalte 1 comentarii
1

Pot reproduce și eu această problemă. Adăugarea show_in_rest în funcția register_taxonomy, așa cum sugerează mulți, ar fi în mod normal răspunsul corect, dar nu este soluția completă în cazul tău. Acest lucru se întâmplă pentru că endpoint-ul REST types este deja utilizat de WordPress însuși. https://example.com/wp-json/wp/v2/types va returna tipurile de postări înregistrate și, prin urmare, Gutenberg nu le înțelege. Vezi https://developer.wordpress.org/rest-api/reference/post-types/

Astfel, schimbarea slug-ului este probabil cea mai bună soluție. Dacă site-ul tău este live, atunci ar trebui să iei în considerare unele reguli de rescriere pentru a nu afecta SEO-ul.

Totuși, chiar dacă schimbi slug-ul, trebuie să adaugi și show_in_rest atunci când folosești Gutenberg.

20 ian. 2020 09:52:49
Comentarii

+1 pentru un răspuns bine analizat și informativ.

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

Presupun că problema este cauzată de priorități...

Ambele acțiuni ale tale folosesc aceeași prioritate. Deci dacă funcția type_custom_taxonomy este apelată prima, atunci tipul de postare action nu există încă în acel moment.

Aș încerca ceva de genul acesta:

function action_post_type() {
  register_post_type( 'action',
    array(
      'labels' => array(
        'name' => __( 'Acțiuni' ),
        'singular_name' => __( 'Acțiune' )
      ),
      'public' => true,
      'has_archive' => true,
      'show_in_rest'       => true,
      'supports'     => array('title', 'editor','thumbnail'),
    )
  );

  $labels = array(
    'name' => _x( 'Tipuri', 'taxonomy general name' ),
    'singular_name' => _x( 'Tip', 'taxonomy singular name' ),
    'menu_name' => __( 'Tipuri' ),
  );    

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

În acest fel poți fi sigur că CPT-ul este înregistrat înaintea taxonomiei și poți atribui acea taxonomie acelui CPT.

6 mar. 2019 19:54:07
Comentarii

mulțumesc pentru răspuns. Am încercat asta, dar nu a rezolvat problema.

Hanane Hanane
6 mar. 2019 20:01:53
3

Ați adăugat vreun termen la taxonomia "Tipuri"?
Cred că nu este nimic în neregulă cu codul. Adăugați un "Tip" făcând clic pe linkul afișat în captura de ecran 'ajouter uni nouvelle categorie'. După ce adăugați câteva "Tipuri", veți putea selecta.

6 mar. 2019 20:13:38
Comentarii

da, aceasta este problema pe care o am, nu afișează lista de termeni pe care i-am adăugat deja. Deci da, pot adăuga un termen nou, dar dacă vreau să modific CPT-ul meu, nu am lista termenilor mei

Hanane Hanane
8 mar. 2019 16:29:59

Am încercat codul tău pe configurația mea și funcționează fără probleme. Vezi aici. Poate că altă parte din codul tău creează această problemă.

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

Da, funcționează dacă nu folosești Gutenberg. Dar când adaug 'show_in_rest' => true la CPT-ul meu pentru a avea Editorul Gutenberg, nu funcționează. Aceasta este problema

Hanane Hanane
9 mar. 2019 11:08:38
1

Pot să reproduc aceeași problemă.

El vede Tab-ul, dar fără intrări. Deci show_in_rest nu este soluția și a fost deja configurat corect.

Problema este un Răspuns Rest-API gol. Acest lucru nu se întâmplă la o instalare curată.

Mergi (pe o instanță locală) prin pluginurile tale, dezactivează-le unul câte unul. Verifică http://domain.test/wp-json/wp/v2/taxonomyname într-o fereastră separată pentru a vedea dacă afectează rezultatul tău.

În cazul meu, a fost pluginul "User Access Manager" cu setarea implicită "Taxonomies settings"->Hide empty Taxonomies setată pe da!

În acest caz, selectează taxonomia ta sub "Object type" și setează opțiunea pe Nu.

9 oct. 2019 17:09:55
Comentarii