是否可以从默认类别小工具中删除<ul><li>?

时间:2015-10-19 作者:SRENG Khorn

在我的wordpress主题中,我很难覆盖默认的类别小部件。我从头开始创建主题。

我想删除<ul><li></li></ul> 来自列表中的类别。我想使用添加我自己的样式<a href=""></a> 相反

<div class="list-group"> 
<a href="#" class="list-group-item">LifeStyle</a> 
<a href="#" class="list-group-item">SmartPhones</a> 
<a href="#" class="list-group-item">Business</a> 
<a href="#" class="list-group-item">Graphic Design</a> 
<a href="#" class="list-group-item">Agriculture</a> 
<a href="#" class="list-group-item">Music</a> 
<a href="#" class="list-group-item">Travel</a> 

我可以覆盖它?

2 个回复
最合适的回答,由SO网友:Hernan 整理而成

这是一个非常棘手且冗长的问题,没有简单的方法可以做到这一点,因为我想你应该在你的主题中覆盖这个核心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)

SO网友:Sandeep

这对我有用<?php echo the_category(\' \'); ?>.它删除了ul li,然后您可以使用父div类或id设置超链接样式。