我正在努力实现一些看似简单但却让我头疼的事情。我正在使用wp\\U list\\U categories列出我的类别,这给了我这个。。。
<ul>
<li>Fruit</li>
<li>Vegetables</li>
<li>Tinned Goods</li>
<li>Dairy Products</li>
</ul>
我只想使用walker函数向ul和li添加一个类,我的函数如下所示。。。。
class Walker_Simple_Example extends Walker {
var $db_fields = array( \'parent\' => \'parent_id\', \'id\' => \'object_id\' );
function start_lvl(&$output, $depth=1, $args=array()) {
$output .= "\\n<ul class=\\"product_cats\\">\\n";
}
function end_lvl(&$output, $depth=0, $args=array()) {
$output .= "</ul>\\n";
}
function start_el(&$output, $item, $depth=0, $args=array()) {
$output .= "<li class=\\"item\\">".esc_attr( $item->name );
}
function end_el(&$output, $item, $depth=0, $args=array()) {
$output .= "</li>\\n";
}
}
这对li项目很有效,并为它们提供了一个“项目”类,但ul类没有出现。有人能看出我错在哪里吗?
最合适的回答,由SO网友:s_ha_dum 整理而成
您应该扩展Walker_Category
不是主要的Walker类。
class Walker_Simple_Example extends Walker_Category {
function start_lvl(&$output, $depth=1, $args=array()) {
$output .= "\\n<ul class=\\"product_cats\\">\\n";
}
function end_lvl(&$output, $depth=0, $args=array()) {
$output .= "</ul>\\n";
}
function start_el(&$output, $item, $depth=0, $args=array()) {
$output .= "<li class=\\"item\\">".esc_attr( $item->name );
}
function end_el(&$output, $item, $depth=0, $args=array()) {
$output .= "</li>\\n";
}
}
wp_list_categories(array(\'walker\'=> new Walker_Simple_Example));
现在这确实管用了。
product_class
应用于子级
ul
但是您的walker并没有保留很多默认功能。
如果要将类指定给父类<ul>
, 这有点太复杂了。那个<ul>
来自wp_list_categories
function itself, 不是来自步行者。禁用您似乎没有使用的“标题”,并写入包装器<ul>
.
echo \'<ul class="product_cats">\';
wp_list_categories(array(\'title_li\'=> false));
echo \'</ul>\';