在块编辑器分类侧栏中添加要列出的术语

时间:2020-10-20 作者:helgatheviking

我是一个插件的作者Radio Buttons for taxonomies 它将某些分类法元框(经典)和侧栏(块编辑器)转换为使用单选按钮而不是复选框来选择术语。

与复选框不同,您可以简单地取消选中复选框,如果您想让某人有机会;撤消(&Q);您需要提供额外的;“术语”;他们可以选择,然后不保存任何值。如果你愿意的话,这是一种伪术语。

因此,我过滤get_terms() 并添加一个值为0的假术语。保存时,我检查术语的值是否为0,并确保没有为该帖子保存术语。

为了将其简化为所有人都可以测试的内容,下面是一个示例代码片段:

/**
 * Add new 0 or null term in metabox and quickedit
 * this will allow users to "undo" a term if the taxonomy is not required
 *
 * @param array         $terms      Array of found terms.
 * @param array         $taxonomies An array of taxonomies.
 * @param array         $args       An array of get_terms() arguments.
 * @return array
 */
function kia_get_terms( $terms, $taxonomies, $args ) { 

    if ( isset( $args[\'fields\'] ) && $args[\'fields\'] == \'all\' ) {

        $no_term = esc_html__( \'No term\', \'my-text-domain\' );

        $uncategorized = (object) array( 
            \'term_id\' => 0,
            \'count\' => 0,
            \'description\' => \'\',
            \'name\' => $no_term,
            \'slug\' => \'0\',
            \'taxonomy\' => \'category\',
            \'parent\' => \'0\',
        );

        array_push( $terms, new WP_Term( $uncategorized ) );

    }

    return $terms;
}

add_filter( \'get_terms\', \'kia_get_terms\', 10, 3 );
在经典编辑器中,这很好。但是在块编辑器中(仍然使用get_terms() 通过REST API。。。这会导致Uncaught (in promise) error 似乎陷入了一个无限循环。如何防止此循环?

error log showing recursion

1 个回复
最合适的回答,由SO网友:Towhidul Islam 整理而成

问题是你通过了”;term\\u id;在代码中为0。请改用-1!。它肯定会显示在块编辑器中。我想这是古腾堡的一只虫子。

相关推荐