我有一个自定义的分层分类“区域”,我在3个级别创建术语:country>国家>市。这是用于搜索引擎优化的目的,所以我有一个疯狂的城市数量(60k +)。
到目前为止,我添加了大约12k的术语,而且分类法管理页面变得非常缓慢,因为WP将所有现有的分类法拉入了父下拉列表中。现在我试图将此下拉菜单的深度限制为2个级别 - 仅限国家和州。一个城市永远不会成为另一个城市的父母,所以我很擅长这样做。
我试图关注https://wordpress.stackexchange.com/questions/106164/how-to-disable-page-attributes-dropdown-in-wp-admin但没有运气 - 我无法弄清楚如何改变 wp_dropdown_categories 的args,我认为这是我需要什么。
我在我的functions.php中试过这个:
add_filter( 'wp_dropdown_categories', 'limit_parents_wpse_106164' );
function limit_parents_wpse_106164( $args )
{
$args['depth'] = '1';
return $args;
}
但这不起作用,父下拉列表仍然包含所有条款。我在这里错过了什么?提前谢谢。
答案 0 :(得分:3)
让我们看一下生成父下拉列表的代码部分:
(可湿性粉剂管理员\编辑标签的form.php的)
<?php if ( is_taxonomy_hierarchical($taxonomy) ) : ?>
<tr class="form-field term-parent-wrap">
<th scope="row"><label for="parent"><?php _ex( 'Parent', 'term parent' ); ?></label></th>
<td>
<?php
$dropdown_args = array(
'hide_empty' => 0,
'hide_if_empty' => false,
'taxonomy' => $taxonomy,
'name' => 'parent',
'orderby' => 'name',
'selected' => $tag->parent,
'exclude_tree' => $tag->term_id,
'hierarchical' => true,
'show_option_none' => __( 'None' ),
);
/** This filter is documented in wp-admin/edit-tags.php */
$dropdown_args = apply_filters( 'taxonomy_parent_dropdown_args', $dropdown_args, $taxonomy, 'edit' );
wp_dropdown_categories( $dropdown_args ); ?>
<?php if ( 'category' == $taxonomy ) : ?>
<p class="description"><?php _e('Categories, unlike tags, can have a hierarchy. You might have a Jazz category, and under that have children categories for Bebop and Big Band. Totally optional.'); ?></p>
<?php endif; ?>
</td>
</tr>
<?php endif; // is_taxonomy_hierarchical() ?>
正如您所看到的,他们使用了另一个过滤器钩子:taxonomy_parent_dropdown_args
所以让我们试试这个:
add_filter( 'taxonomy_parent_dropdown_args', 'limit_parents_wpse_106164', 10, 2 );
function limit_parents_wpse_106164( $args, $taxonomy ) {
if ( 'my_custom_taxonomy' != $taxonomy ) return $args; // no change
$args['depth'] = '1';
return $args;
}