我已经设置了一个自定义walker,当我硬编码我的变量时,它可以根据需要工作。
我想要的是能够调用我的walker,并将walker中使用的变量传递给它。
例如:
\'walker\' => new Plus_walker($refine => \'review\'),
我调整输出的步行器
http://URL/review 以便在此菜单项的“审阅”类别中查找帖子。但我希望能够使用同一个助行器进行“预览”、“采访”等。到目前为止,我输入变量的尝试打破了“解析错误:语法错误,意外的T\\u双箭头”这一整件事。
我知道我可以重写代码并制作一些不同的walker(Review\\u walker、Preview\\u walker等),但这似乎是错误的(我认为这可能是一件重要的事情……)
我的沃克密码在这里:
class plus_walker extends Walker_Nav_Menu {
var $refine;
function __construct($refine) {
$this->refine = $refine;
}
function start_el(&$output, $item, $depth, $args)
{
global $wp_query;
$indent = ( $depth ) ? str_repeat( "\\t", $depth ) : \'\';
$class_names = $value = \'\';
$classes = empty( $item->classes ) ? array() : (array) $item->classes;
$class_names = join( \' \', apply_filters( \'nav_menu_css_class\', array_filter( $classes ), $item ) );
$class_names = \' class="\'. esc_attr( $class_names ) . \'"\';
$output .= $indent . \'<li id="menu-item-\'. $item->ID . \'"\' . $value . $class_names .\'>\';
$attributes = ! empty( $item->attr_title ) ? \' title="\' . esc_attr( $item->attr_title ) .\'"\' : \'\';
$attributes .= ! empty( $item->target ) ? \' target="\' . esc_attr( $item->target ) .\'"\' : \'\';
$attributes .= ! empty( $item->xfn ) ? \' rel="\' . esc_attr( $item->xfn ) .\'"\' : \'\';
$attributes .= ! empty( $item->url ) ? \' href="\' . esc_attr( $item->url ) . \'\' : \'\'; //This is where I want the argument to live.
$modded_url = substr($attributes,0,-1) . \'+\' . $refine . \'"\';
$item_output = $args->before;
$item_output .= \'<a\'. $modded_url .\'>\';
$item_output .= $args->link_before .$prepend.apply_filters( \'the_title\', $item->title, $item->ID ).$append;
$item_output .= $description.$args->link_after;
$item_output .= \'</a>\';
$item_output .= $args->after;
$output .= apply_filters( \'walker_nav_menu_start_el\', $item_output, $item, $depth, $args );
}
}
以及我的模板中的php调用:
<?php wp_nav_menu( array(
\'menu\' => \'Handheld\',
\'container\' => \'div\',
\'container_class\' => \'col_1\',
//\'container_id\' => ,
\'menu_class\' => \'menu\',
// \'menu_id\' => ,
\'echo\' => true,
\'fallback_cb\' => \'wp_page_menu\',
\'items_wrap\' => \'<ul id="%1$s" class="%2$s">%3$s</ul>\',
\'depth\' => 0,
\'walker\' => new Plus_walker(array($refine => \'review\')),
)
); ?>
我尝试了一系列不同的配置:“refine”=>“review,有无数组,但仍然没有乐趣,只有错误(大部分是意外的“=>”)。