当前位置: 首页 > 知识库问答 >
问题:

自定义分类法-限制父下拉深度

冷越泽
2023-03-14

我有一个自定义的层次分类法'地区'和我在3个级别上创建术语:国家

到目前为止,我添加了大约12k个术语,分类法管理页面变得非常缓慢,因为WP将所有现有分类法拉入父下拉列表。现在我试图将这个下拉菜单的深度限制为两个级别-仅限国家和州。一个城市永远不会成为另一个城市的家长,所以我很乐意这样做。

我试着跟着https://wordpress.stackexchange.com/questions/106164/how-to-disable-page-attributes-dropdown-in-wp-admin但是运气不好-我不知道如何更改wp_下拉列表_类别的参数,我想这正是我所需要的。

我在我的函数中尝试了这个。php:

add_filter( 'wp_dropdown_categories', 'limit_parents_wpse_106164' );

function limit_parents_wpse_106164( $args )
{
    $args['depth'] = '1';
    return $args;
}

但这不起作用,父项下拉列表中仍然填充了所有术语。我错过了什么?提前谢谢。

共有1个答案

闻人栋
2023-03-14

让我们看看生成父下拉列表的代码部分:
(wp-admin\edit-tag-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;
}
 类似资料:
  • 这似乎是一种非常“愚蠢”的方式...有人知道更好的方法吗?也许java有一些内置的方法?

  • 我正在尝试创建一个查询,其中我在自定义帖子类型中创建了多个类别(分类法),然后在主页上根据具体的内容进行查询,这样做很好。目前我有3种分类法: 当前特价 meineke-差异 特色 我已经编写了拉动这些的代码。我遇到的问题是,在主页上,当这些帖子也附加到“特色”分类法时,它只需要拉这些帖子。因此,这方面的标准逻辑示例如下: 如果分类法=当前特价商品和特色商品,则成功或失败 但是它所做的是把它们都拉

  • 我已经创建了一个包含多个分类法的自定义查询,在此基础上,我使用进行分页。分类法是通过下拉选择表单来选择的,使用可以过滤帖子,这只是一个临时解决方案,但目前效果良好,值得注意。 分页工作正常,当选择分类术语时,帖子可以正确显示,但是当我离开第一页,比如说我进入第2页,在下拉选择器中选择不同的分类术语时,URL会保留当前页码,并向其中添加选择器ID。我想实现的是,当我在选择器中单击不同的分类法时,新选

  • 本文向大家介绍Android自定义下拉刷新上拉加载,包括了Android自定义下拉刷新上拉加载的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了Android自定义下拉刷新上拉加载的具体实现步骤,供大家参考,具体内容如下 实现的方式是SwipeRefreshLayout + RecyclerView 的VIewType 首先看效果: 总的思路: 布局文件 下拉刷新的实现思路 用于测试的

  • 我想只显示父类别名称而不是孩子,也不使用在任何产品或帖子,我只需要列出父自定义类别。 我尝试了获取术语、wp\u列表\u类别函数,但它也显示子项 这是我的代码。 它还显示了child,但我只需要父类别名称。 我使用Product_cat是一个WooCommerce类别,当我使用它与get_terms它是给空数组。 我也用这种方式,但product_cat不适用于get_术语 请参阅附件中的图片,我

  • 本文向大家介绍Android权限控制之自定义权限,包括了Android权限控制之自定义权限的使用技巧和注意事项,需要的朋友参考一下 天哪,这篇文章终于说道如何自定义权限了,左盼右盼,其实这个自定义权限相当easy。为了方便叙述,我这边会用到两个app作为例子示范。 Permission App: used to define a new permission 这个作为定义权限的App,我称之为Pe