在菜单编辑器中搜索术语时,它会运行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 );