在编辑帖子的内置类别metabox中使用wp_Terms_Checklist的输出时,如何修改输出?

时间:2021-04-28 作者:davemackey

在WP Admin的编辑屏幕上,有一个用于WP内置类别分类的元框。此元框是使用post_categories_meta_box() (/wp-admin/includes/meta-boxes.php).

此元框使用wp_popular_terms_checklist( $tax_name )wp_terms_checklist( $tax_name ) 在元框中输出实际类别(带有复选框)。

wp_terms_checklist() (wp-admin/includes/template.php) 使用Walker_Category_Checklist (/wp-admin/includes/class-walker-category.checklist) 构建类别/复选框。

Walker_Category_Checklist 继承自Walker (wp-includes/class-wp-walker.php) 就像许多其他WP Walker一样(Walker_Nav_Menu, Walker_Comment, Walker_Category, 等等)。

扩展时Walker_Nav_Menu 我们可以在wp_edit_nav_menu_walker 过滤并返回我们的自定义walker。有没有办法做到这一点Walker_Category_Checklist?

===

Update 1:

我明白了wp_terms_checklist() 有:

apply_filters( \'wp_terms_checklist_args\', $args, $post_id );

我想我可以挂入这个过滤器,更改walker 和一个定制步行者争论,这可能会奏效?

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

是的,因为documentation for wp_terms_checklist() 声明,您可以使用walker 参数(它是$args 的参数wp_terms_checklist_args hook) 要使用自定义walker,可修改由生成的类别清单的输出wp_terms_checklist(), e、 g.“中的一个”;“类别”;元框打开wp-admin/post.php.

自定义walker位于名为includes:

add_filter( \'wp_terms_checklist_args\', \'my_wp_terms_checklist_args\', 10, 2 );
function my_wp_terms_checklist_args( $args, $post_id ) {
    require_once __DIR__ . \'/includes/class-my-walker-category-checklist.php\';

    $args[\'walker\'] = new My_Walker_Category_Checklist;

    return $args;
}

相关推荐

自定义Metabox数据在Admin Init上的查询速度较慢

最近,我的数据库在Post和Posteta中都变得非常大,当访问WP admin时,它在init上加载了大约700mb的数据,这会减慢整个后端的速度。我发现大量数据是从自定义metabox init生成的。我使用以下方法加载带有WP\\U查询获取的数据的自定义Select元数据库:add_filter( \'rwmb_meta_boxes\', \'Theme2035_register_meta_boxes\' ); function Theme2035_register_meta_bo