自定义分类术语未显示为列表Gutenberg编辑器

时间:2019-03-06 作者:Hanane

我已经创建了一个与我的CPT关联的自定义分类法。两者都出现在我的仪表板上,问题是当我添加内容并想从自定义分类法列表中选择一个术语时,没有值(没有列表,没有复选框…)。我正在使用wordpress 5.1。下面是添加到函数的代码。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 );
enter image description here

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

6 个回复
最合适的回答,由SO网友:Mehmood Ahmad 整理而成

改变分类法对我来说很有用。我不知道这背后的原因,但它是有效的。

SO网友:Ali Gamaan

我面临的问题与你的问题相同,解决方法如下

您必须添加\'show_in_rest\' => true, 对于post\\u类型和分类,int数组的最后一行,例如

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,
 )
);
分类学

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

SO网友:Pekka

我也可以复制这个。正在添加show_in_rest 在里面register_taxonomy 正如许多人所建议的那样,函数通常是正确的答案,但在您的情况下并不是完整的答案。这是因为rest端点types 已被Wordpress本身使用。https://example.com/wp-json/wp/v2/types 将返回注册的帖子类型,因此古腾堡不理解它。看见https://developer.wordpress.org/rest-api/reference/post-types/

因此,更换slug可能是最好的方法。如果你的站点是实时的,那么你可能需要考虑一些重写规则,这样SEO就不会受到影响。

尽管如此,即使您更改了slug,您也需要添加show_in_rest 使用古腾堡时也是如此。

SO网友:Krzysiek Dróżdż

我猜这是由优先顺序引起的。。。

您的两个操作使用相同的优先级。所以如果type_custom_taxonomy 函数被称为第一个函数,然后action 此时不存在帖子类型。

我会尝试这样的方式:

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

  $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\', \'action_post_type\' );
这样,您可以确保在分类之前注册了CPT,并且可以将该分类分配给该CPT。

SO网友:Qaisar Feroz

Have you added some term to taxonomy "Types"?<我认为代码没有问题。通过单击屏幕截图中显示的链接添加“类型”ajouter uni nouvelle categorie\' . 添加一些“类型”后,您将能够选择。

SO网友:Alchem

我可以复制同样的问题。

他看到了选项卡,但没有条目。所以show_in_rest 不是解决方案,已正确设置。

问题是Rest API响应为空。这不会发生在干净的安装上。

(在本地实例上)浏览插件,逐个停用。看看http://domain.test/wp-json/wp/v2/taxonomyname 在单独的窗口中查看它是否影响您的输出。

在我的例子中,是“用户访问管理器”插件,默认设置为“分类法设置”->“隐藏空分类法”选项变为“是”!

在这种情况下,请在“对象类型”下选择分类法,并将选项设置为“否”。

相关推荐