如何将自定义文本附加到‘Categories Widget’的输出中?

时间:2016-05-15 作者:KDX

如何自定义“类别小部件”以在侧边栏显示上附加其他文本?

从…起

category 1
category 2
category 3
category 4

category 1 folder
category 2 folder
category 3 folder
category 4 folder
在不实际修改数据库中的类别名称的情况下,我想向侧栏前端显示添加一些实际定制的文本。

目前,我的侧栏正在通过调用dynamic_sidebar( \'sidebar-1\' )

Update:

我设法用插件解决了我的问题。

Widget Output Filters

有没有关于如何在不使用插件的情况下完成这项工作的建议?

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

要将文本附加到该小部件中标题的末尾,只需使用一些CSS即可。

<li>
 <a class="my-folder-categories">Category 1</a>
</li>

a.my-folder-categories-folder:after {content:" folder";
这将有效地使文本显示为:

category 1 folder
确保在内容值中添加该空格。

如果您想使用上述插件,但不是作为插件使用,请使用源代码并修改到您的规格。

/**
* Class Widget_Output_Filters
*
* Allows developers to filter the output of any WordPress widget.
*/
class Widget_Output_Filters {

/**
* Initializes the functionality by registering actions and filters.
*/
public function __construct() {

// Priority of 9 to run before the Widget Logic plugin.
add_filter( \'dynamic_sidebar_params\', array( $this, \'filter_dynamic_sidebar_params\' ), 9 );
}

/**
* Replaces the widget\'s display callback with the Dynamic Sidebar Params display callback, storing the original callback for use later.
*
* The $sidebar_params variable is not modified; it is only used to get the current widget\'s ID.
*
* @param array $sidebar_params The sidebar parameters.
*
* @return array The sidebar parameters
*/
public function filter_dynamic_sidebar_params( $sidebar_params ) {

if ( is_admin() ) {
return $sidebar_params;
}

global $wp_registered_widgets;
$current_widget_id = $sidebar_params[0][\'widget_id\'];

$wp_registered_widgets[ $current_widget_id ][\'original_callback\'] = $wp_registered_widgets[ $current_widget_id ][\'callback\'];
$wp_registered_widgets[ $current_widget_id ][\'callback\'] = array( $this, \'display_widget\' );

return $sidebar_params;
}

/**
* Execute the widget\'s original callback function, filtering its output.
*/
public function display_widget() {

global $wp_registered_widgets;
$original_callback_params = func_get_args();

$widget_id         = $original_callback_params[0][\'widget_id\'];
$original_callback = $wp_registered_widgets[ $widget_id ][\'original_callback\'];

$widget_id_base = $original_callback[0]->id_base;
$sidebar_id     = $original_callback_params[0][\'id\'];

if ( is_callable( $original_callback ) ) {

ob_start();
call_user_func_array( $original_callback, $original_callback_params );
$widget_output = ob_get_clean();

/**
* Filter the widget\'s output.
*
* @param string $widget_output  The widget\'s output.
* @param string $widget_id_base The widget\'s base ID.
* @param string $widget_id      The widget\'s full ID.
* @param string $sidebar_id     The current sidebar ID.
*/
echo apply_filters( \'widget_output\', $widget_output, $widget_id_base, $widget_id, $sidebar_id );
}
}
}

相关推荐

绕过WP查询中的“supress_Filters”

显然,出于某种不合逻辑的原因,开发人员决定获取所有语言帖子的唯一方法是添加supress_filters=true 到WP\\u查询(而不是像这样language_code=all 选项)。无论如何,我的情况是,我需要获取所有语言的帖子,但也需要使用过滤器修改WP\\u查询。有没有办法强制将我的过滤器添加到查询中,即使supress_filters 设置为false?这是我需要添加的过滤器:add_filter( \'posts_where\', function($where, $wp_query) {