Post Gutenberg 编辑器中未显示自定义分类法
Posted
技术标签:
【中文标题】Post Gutenberg 编辑器中未显示自定义分类法【英文标题】:Custom Taxonomy not showing in Post Gutenberg editor 【发布时间】:2019-09-16 04:00:52 【问题描述】:我已经在 Wordpress 中注册了一个自定义分类法,但我不知道为什么它没有显示在标准的 Wordpress 帖子中,因为引入了 Gutenberg。我的意思是,添加或编辑帖子时它不会显示在文档侧边栏中。 “类别”和“标签”也是如此,它们显然是标准分类法。
我已确保 'show_in_rest' => true 存在是分类注册,但没有任何区别。
似乎他们正在部分注册,因为它们显示在左侧主菜单的“帖子”下,这表明它可能与古腾堡有关?
有什么想法吗?
// Register taxonomy
add_action( 'init', 'register_taxonomy_articles_element' );
function register_taxonomy_articles_element()
$labels = array(
'name' => _x( 'Elements', 'articles_element' ),
'singular_name' => _x( 'Element', 'articles_element' ),
'search_items' => _x( 'Search Elements', 'articles_element' ),
'popular_items' => _x( 'Popular Elements', 'articles_element' ),
'all_items' => _x( 'All Elements', 'articles_element' ),
'parent_item' => _x( 'Parent Element', 'articles_element' ),
'parent_item_colon' => _x( 'Parent Element:', 'articles_element' ),
'edit_item' => _x( 'Edit Element', 'articles_element' ),
'update_item' => _x( 'Update Element', 'articles_element' ),
'add_new_item' => _x( 'Add New Element', 'articles_element' ),
'not_found' => _x( 'No Elements found', 'articles_element' ),
'new_item_element' => _x( 'New Element', 'articles_element' ),
'separate_items_with_commas' => _x( 'Separate Elements with commas', 'articles_element' ),
'add_or_remove_items' => _x( 'Add or remove elements', 'articles_element' ),
'choose_from_most_used' => _x( 'Choose from the most used elements', 'articles_element' ),
'menu_name' => _x( 'Elements', 'articles_element' )
);
$args = array(
'labels' => $labels,
'public' => true,
'publicly_queryable' => true,
'show_in_nav_menus' => true,
'show_in_rest' => true,
'show_ui' => true,
'show_tagcloud' => true,
'hierarchical' => true,
'rewrite' => true,
'query_var' => true
);
register_taxonomy( 'element', array('post'), $args );
【问题讨论】:
【参考方案1】:如果有人在显示分类法或古腾堡编辑器时仍有问题,请在自定义帖子类型和分类法参数中添加'show_in_rest' => true,
。
【讨论】:
【参考方案2】:由于 Gutenberg 是基于 REST API 工作的,因此您需要为任何自定义帖子类型和分类打开对 REST API 的支持。您需要将额外的密钥 show_in_rest = true
添加到您的 $args
数组中。您的完整代码应如下所示:
$args = array(
'labels' => $labels,
'public' => true,
'show_in_rest' => true, // add support for Gutenberg editor
'publicly_queryable' => true,
'show_in_nav_menus' => true,
'show_in_rest' => true,
'show_ui' => true,
'show_tagcloud' => true,
'hierarchical' => true,
'rewrite' => true,
'query_var' => true
);
【讨论】:
嘿@artem,谢谢你,但正如你从我的问题和代码中看到的那样,这已经到位了吗? 感谢您的解决方案,不知道'show_in_rest' => true,
【参考方案3】:
似乎经过大量调查,问题不在于上面的代码(这是正确的)。问题在于第二个自定义分类法,名为“类型”。事实证明,Wordpress 包含许多“reserved terms”,其中一个是“类型”。重命名此分类法后,两种分类法都可以正常工作,包括古腾堡。
【讨论】:
'show_in_rest' => 在 register_post_type 和 register_taxonomy 和 register_taxonomy 的两个参数中添加的 true 参数不是 wordpress 的保留条款。但是分类在帖子编辑中不可见。类别元框仅在其上显示默认类别。你能帮帮我吗?【参考方案4】:您面临的问题可以通过将列表中的'rewrite'
属性从true
更改为array( 'slug' => 'your-taxonomy-slug' )
来解决,因此新的'rewrite'
应该看起来像'rewrite' => array( 'slug' => 'your-taxonomy-slug' )
,您可以放置任何slug 而不是@ 987654326@.
这应该起作用的原因我不完全理解,但看起来块编辑器使用了 Rest API,由于某种原因无法在不重写 slug 的情况下处理分类法!那里有些奇怪,因为所有其他功能都可以正常工作,只是出于某种原因,它只是在古腾堡内部。
如果这不起作用,则可能是主题或插件冲突...尝试停用某些内容以查看导致冲突的原因。
【讨论】:
以上是关于Post Gutenberg 编辑器中未显示自定义分类法的主要内容,如果未能解决你的问题,请参考以下文章
在 WordPress Gutenberg Block 插件中包含图像资产