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 编辑器中未显示自定义分类法的主要内容,如果未能解决你的问题,请参考以下文章

显示自定义 Gutenberg 块的预览图像

在 Gutenberg 自定义横幅块中使用页面标题

在 WordPress Gutenberg Block 插件中包含图像资产

WordPress Gutenberg,以编程方式更新帖子内容

为Gutenberg自定义块添加内置调色板

创建页面并发布特定的 ACF Gutenberg 块