He configurado un caminante personalizado, y funciona como se desea cuando codifico mi variable.
Lo que quiero es poder llamar a mi caminante y pasarle una variable que se usa en el caminante.
Por ejemplo:
'walker' => new Plus_walker($refine => 'review'),
El caminante que he ajustado para mostrar enlace con el fin de encontrar publicaciones en la categoría de revisión para este elemento del menú. Pero quiero poder usar el mismo andador para "avances", "entrevistas" y más. Hasta ahora, mis intentos de ingresar variables simplemente han roto todo, 'Error de análisis: error de sintaxis, T_DOUBLE_ARROW inesperado'.
Sé que podría simplemente reescribir el código y crear diferentes caminantes (Review_walker, Preview_walker, etc.), pero esto simplemente parece incorrecto (y creo que esto podría ser una cosa importante de saber ...)
Mi código de walker está aquí:
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 );
}
}
Y la llamada php en mis plantillas:
<?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')),
)
); ?>
He probado un montón de configuraciones diferentes: 'refine' = > 'revisa, con y sin la matriz, pero aún sin alegría, solo errores (inesperado' = > 'en su mayoría).