Términos de taxonomía personalizada no se muestran como lista en el Editor Gutenberg

6 mar 2019, 19:11:22
Vistas: 13.5K
Votos: 15

He creado una taxonomía personalizada que he asociado a mi CPT. Ambos aparecen en mi panel de control, el problema es que cuando agrego contenido y quiero elegir un término de la lista de la taxonomía personalizada, no hay valores (ni lista, ni casillas de verificación...). Estoy usando WordPress 5.1. Aquí está el código agregado a functions.php:

function type_custom_taxonomy() {

  $labels = array(
    'name' => _x( 'Tipos', 'nombre general de taxonomía' ),
    'singular_name' => _x( 'Tipo', 'nombre singular de taxonomía' ),
    'menu_name' => __( 'Tipos' ),
  );    

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

Captura de pantalla mostrando el problema en el editor Gutenberg

// CPT
function action_post_type() {
  register_post_type( 'action',
    array(
      'labels' => array(
        'name' => __( 'Acciones' ),
        'singular_name' => __( 'Acción' )
      ),
      'public' => true,
      'has_archive' => true,
      'show_in_rest'       => true,
      'supports'     => array('title', 'editor','thumbnail'),
      'taxonomies' => array('types')
    )
  );
}
add_action( 'init', 'action_post_type' );
2
Comentarios

¿Y cómo está registrado tu CPT?

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

He editado mi publicación

Hanane Hanane
6 mar 2019 19:45:55
Todas las respuestas a la pregunta 6
3
38

Me encontré con el mismo problema que tú y lo resolví de la siguiente manera:

Debes agregar 'show_in_rest' => true, tanto para el post_type como para las taxonomías en la última línea del array, de esta forma:

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

Para la Taxonomía:

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 abr 2019 23:31:50
Comentarios

Lo tenía en mi CPT, pero no en el registro de taxonomía, esto resolvió el problema para mí.

Faye Faye
26 jun 2019 21:08:50

Esta es la respuesta correcta

user1676224 user1676224
29 nov 2019 17:08:33

Creo que tal vez hubo un momento donde la primera respuesta "seleccionada" era una solución, pero en 2020, parece que 'show_in_rest' => true, es lo que falta si tu problema es que aparece en el editor clásico pero no en el Editor de Bloques.

jerclarke jerclarke
28 ago 2020 21:36:10
6

Cambiar el slug de la taxonomía funciona para mí. No sé la razón detrás de esto, pero funciona.

12 mar 2019 00:03:38
Comentarios

¿Quieres decir que tengo que agregar 'rewrite' => array( 'slug' => 'type' ), No funcionó para mí, ¿Puedes mostrarme el código por favor?

Hanane Hanane
12 mar 2019 12:05:25

No, no intenté usar rewrite pero cambié el slug en la llamada register_taxonomy así: register_taxonomy( 'kt-types', array('action'), $args). Lo probé localmente y funciona para mí.

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

Sí, funciona cuando cambio types por action-types. Muchas gracias mahmood. ¿Podrías escribir tu respuesta como solución para que pueda aceptarla?

Hanane Hanane
13 mar 2019 18:53:40

Me alegra saber que funciona. Ya he añadido mi respuesta como solución. ¿Quieres que lo explique con más detalle?

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

Perdón, no lo había visto. Está claro para mí, gracias.

Hanane Hanane
13 mar 2019 19:09:24

No deberías cambiar el slug, eso no es una solución. Pero es perfecto si quieres afectar tu SEO. Necesitas agregar 'show_in_rest' => true, a tus argumentos.

user1676224 user1676224
29 nov 2019 17:10:18
Mostrar los 1 comentarios restantes
1

Yo también puedo reproducir este problema. Agregar show_in_rest en la función register_taxonomy, como sugieren muchos, normalmente sería la respuesta correcta, pero no es la solución completa en tu caso. Esto se debe a que el endpoint REST types ya está siendo utilizado por WordPress mismo. https://ejemplo.com/wp-json/wp/v2/types devolverá los tipos de contenido registrados y por lo tanto Gutenberg no lo entiende. Consulta https://developer.wordpress.org/rest-api/reference/post-types/

Por lo tanto, cambiar el slug es probablemente la mejor opción. Si tu sitio ya está en vivo, quizás quieras considerar algunas reglas de reescritura para que el SEO no se vea afectado.

Aún así, incluso si cambias el slug, también necesitas agregar show_in_rest cuando uses Gutenberg.

20 ene 2020 09:52:49
Comentarios

+1 por una respuesta bien diagnosticada e informativa.

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

Mi suposición sería que está causado por prioridades...

Ambas acciones están usando la misma prioridad. Entonces, si la función type_custom_taxonomy se llama primero, el tipo de publicación action no existe en ese momento.

Intentaría algo como esto:

function action_post_type() {
  register_post_type( 'action',
    array(
      'labels' => array(
        'name' => __( 'Acciones' ),
        'singular_name' => __( 'Acción' )
      ),
      'public' => true,
      'has_archive' => true,
      'show_in_rest'       => true,
      'supports'     => array('title', 'editor','thumbnail'),
    )
  );

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

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

De esta manera puedes estar seguro de que el CPT se registra antes que la taxonomía y puedes asignar esa taxonomía a ese CPT.

6 mar 2019 19:54:07
Comentarios

gracias por tu respuesta. Lo intenté pero no resolvió el problema.

Hanane Hanane
6 mar 2019 20:01:53
3

¿Has agregado algún término a la taxonomía "Tipos"?
Creo que no hay nada malo con el código. Agrega un "Tipo" haciendo clic en el enlace que se muestra en la captura de pantalla 'ajouter uni nouvelle categorie'. Después de agregar algunos "Tipos", podrás seleccionarlos.

6 mar 2019 20:13:38
Comentarios

sí, ese es el problema que estoy teniendo, no muestra la lista de términos que ya he añadido. Así que sí puedo añadir un nuevo término pero si quiero modificar mi CPT no tengo la lista de mis términos

Hanane Hanane
8 mar 2019 16:29:59

Probé tu código en mi configuración y funciona sin fallos. Ver Esto. Quizás alguna otra parte de tu código está creando este problema.

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

Sí, funciona si no usas Gutenberg. Pero cuando añado 'show_in_rest' => true a mi CPT para tener el Editor Gutenberg, no funciona. Ese es el problema

Hanane Hanane
9 mar 2019 11:08:38
1

Puedo reproducir el mismo problema.

Él ve la pestaña, pero no hay entradas. Por lo tanto, show_in_rest no es la solución y ya estaba configurado correctamente.

El problema es una respuesta vacía de la API REST. Esto no ocurre en una instalación limpia.

Ve (en una instancia local) a través de tus plugins, desactívalos uno por uno. Mira en http://dominio.test/wp-json/wp/v2/nombredetaxonomia en una ventana aparte para ver si afecta tu salida.

En mi caso fue el plugin "User Access Manager" con la configuración por defecto "Configuración de Taxonomías"->Ocultar taxonomías vacías activado a sí.

En este caso selecciona tu taxonomía bajo "Tipo de objeto" y cambia la opción a No.

9 oct 2019 17:09:55
Comentarios