这是一个非常棘手且冗长的问题,没有简单的方法可以做到这一点,因为我想你应该在你的主题中覆盖这个核心WordPress函数。
要走的路是某件事的特殊情况explained here, 因此,您可以在functions.php
.
通过复制original source. 给它起个新名字(在这个例子中,我将使用WP_Widget_Categories_Modified
), 然后开始修改它。
之后,您需要取消注册原始小部件,并注册新的小部件(因此,再次假设您的新类命名为WP_Widget_Categories_Modified
):
function replace_default_wp_widgets() {
unregister_widget( \'WP_Widget_Categories\' );
register_widget( \'WP_Widget_Categories_Modified\' );
}
add_action( \'widgets_init\', \'replace_default_wp_widgets\', 1 );
现在,您已经用新类替换了默认类,新类与原始类完全相同。因此,您需要开始修改您创建的新类。
首先,删除<ul>
和</ul>
前后wp_list_categories
在新类中(记住您复制了原始代码)。
因为WordPress原始类调用wp_list_categories
, 其中包括代码,最好的选择是在函数中添加自定义的“walker”。
为此,还可以添加functions.php
例如,步行者:
class Walker_Categories_Plain extends Walker {
var $db_fields = array( \'parent\' => \'parent_id\', \'id\' => \'object_id\' );
function start_el( &$output, $item, $depth = 0, $args = array() ) {
$output .= "\\n<a href=\'" . get_term_link( $item ) . "\'>" . $item->name . "</a>\\n";
}
}
那么,你需要把这个助行器递给
wp_list_categories
. 为此,将此参数添加为,
before 呼叫
wp_list_categories()
:
$cat_args[\'walker\'] = new Walker_Categories_Plain;
就是这样,如果我没有忘记任何事情,它应该会起作用!
可以修改walker以更改输出,直到达到所需的代码(检查$output
字符串)。
现在,您的主题:
隐藏默认类别小部件注册其自己的类别小部件(仅用于删除<ul>
默认情况下,若要传递新的Walker,请创建其自定义Walker(可在其他任何地方使用以修改wp_list_categories
)