管理员:WooCommerce导航菜单不显示空的类别搜索选项卡

时间:2019-02-01 作者:Rob

我一直在搜索,最终找到了一个回答我问题的问题:

How to show empty category in admin menus search

https://core.trac.wordpress.org/ticket/45298

如何实现快速修复?我正在尝试构建一个复杂的WooCommerce菜单,但搜索选项卡不会显示空类别,这已成为一种痛苦。

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

在菜单编辑器中搜索术语时,它会运行get_terms() 使用name__like 参数(类别是“术语”的一种类型)。

这个get_terms_args 过滤器用于过滤get_terms(). 因此,我们可以使用此过滤器并检查name__like 参数有一个值。如果是这样,则表明这是对术语的搜索,在这种情况下,我们将强制查询包含空术语:

function wpse_327345_search_empty_terms( $args, $taxonomies ) {
    if ( ! empty( $args[\'name__like\'] ) ) {
        $args[\'hide_empty\'] = false;
    }

    return $args;
}
add_filter( \'get_terms_args\', \'wpse_327345_search_empty_terms\', 10, 2 );
但是请注意,这也会影响在管理的其他区域中搜索术语,如编辑后屏幕和类别列表。如果在菜单编辑器中搜索时只想包含空项,可以通过检查$_POST[\'action\'] 存在且等于menu-quick-search:

function wpse_327345_search_empty_terms( $args, $taxonomies ) {
    if ( isset( $_POST[\'action\'] ) && $_POST[\'action\'] === \'menu-quick-search\' ) {
        if ( ! empty( $args[\'name__like\'] ) ) {
            $args[\'hide_empty\'] = false;
        }
    }

    return $args;
}
add_filter( \'get_terms_args\', \'wpse_327345_search_empty_terms\', 10, 2 );

相关推荐

Change searched term

因此,我正在尝试设置一个搜索表单,其中实际搜索的词与用户输入的词不同。具体来说,我需要删除搜索词中的任何破折号。例如,假设用户输入“7-18”。搜索实际需要查询的是“718”。我在想pre_get_posts 也许是一种方式,但我不知道如何去写它。类似于function alter_query($query) { $unedit = the_search_query(); $edited = str_replace(\"-\",\"\",$unedit); the_sea