钩子文档

widget_categories_args

💡 云策文档标注

概述

widget_categories_args 是一个 WordPress 过滤器,用于修改 Categories 小部件的参数。它在默认的“WordPress Widget: Categories”调用 wp_list_categories() 函数之前应用,允许开发者自定义分类列表的显示选项。

关键要点

  • 过滤器名称:widget_categories_args
  • 参数:$cat_args(数组,Categories 小部件选项)和 $instance(数组,当前小部件设置)
  • 用途:在 wp_list_categories() 调用前过滤参数,常用于排除特定分类或调整显示设置
  • 版本历史:从 2.8.0 引入,4.9.0 添加了 $instance 参数

代码示例

add_filter( 'widget_categories_args', 'widget_categories_args_filter', 10, 1 );

function widget_categories_args_filter( $cat_args ) {
	$exclude_arr = array( 4 );
	
	if( isset( $cat_args['exclude'] ) && !empty( $cat_args['exclude'] ) )
		$exclude_arr = array_unique( array_merge( explode( ',', $cat_args['exclude'] ), $exclude_arr ) );
	$cat_args['exclude'] = implode( ',', $exclude_arr );
	return $cat_args;
}

注意事项

  • 示例代码展示了如何通过 exclude 参数隐藏特定分类(如 ID 为 4 的分类),并处理现有 exclude 参数以确保兼容性
  • 开发者应确保过滤器函数正确返回修改后的 $cat_args 数组

📄 原文内容

Filters the arguments for the Categories widget.

Parameters

$cat_argsarray
An array of Categories widget options.
$instancearray
Array of settings for the current widget.

More Information

This filter is used by the default “WordPress Widget: Categories” before it passes arguments to the wp_list_categories() function.

Source

wp_list_categories( apply_filters( 'widget_categories_args', $cat_args, $instance ) );

Changelog

Version Description
4.9.0 Added the $instance parameter.
2.8.0 Introduced.

User Contributed Notes

  1. Skip to note 2 content

    Example migrated from Codex:

    To hide some categories create a filter function in your functions.php file and hook it to the widget_categories_args filter. In this function, add the exclude parameter to the arguments list. Currently, in Version 3.3.2, the exclude parameter is not provided, but for future compatibility you should decide how you want to handle an already existing exclude parameter.

    add_filter( 'widget_categories_args', 'widget_categories_args_filter', 10, 1 );
    
    function widget_categories_args_filter( $cat_args ) {
    	$exclude_arr = array( 4 );
    	
    	if( isset( $cat_args['exclude'] ) && !empty( $cat_args['exclude'] ) )
    		$exclude_arr = array_unique( array_merge( explode( ',', $cat_args['exclude'] ), $exclude_arr ) );
    	$cat_args['exclude'] = implode( ',', $exclude_arr );
    	return $cat_args;
    }