Я работаю над веб-сайтом, в который добавлено пользовательское меню «Ходок». Код прекрасно работает для стандартного меню wp, но я не могу добавить тот же ходок в ubermenu (www.wpmegamenu.com).
Это код в заголовке темы, который загружает меню WordPress:
wp_nav_menu( array( 'theme_location' => 'gold-bullion-menu', 'container' => '', 'fallback_cb' => '', 'menu_class' => 'nav', 'menu_id' => 'gold-bullion-menu', 'walker'=>new gold_bullion_menu_walker($json_data), 'echo' => false ) );
и код Walker для добавления нового div в конце с некоторой внешней информацией, извлекаемой через JSON:
class gold_bullion_menu_walker extends Walker_Nav_Menu{
/**
* @see Walker::start_lvl()
* @since 3.0.0
*
* @param string $output Passed by reference. Used to append additional content.
* @param int $depth Depth of page. Used for padding.
*/
var $data;
function __construct($data) {
$this->data = $data;
}
static $count=0;
function start_lvl( &$output, $depth = 0, $args = array() ) {
if(self::$count == 0)
$output .= "\n$indent<div class=\"spot-price spot-large gold\">NZD ". $this->data["spot-prices"]["AU"]["NZD"]["disp"] ."</div>\n";
$indent = str_repeat("\t", $depth);
$output .= "\n$indent<ul class=\"sub-menu\">\n"; //this is default output;
if( $depth==0 && self::$count == 0) //'0'==>1st-sub-level; '1'=2nd-sub-level; ....
$output .= "\n$indent<div class=\"spot-price spot-small gold\"><span class=\"label\">GOLD PRICE</span><span class=\"price\">NZD ". $this->data["spot-prices"]["AU"]["NZD"]["disp"] ."</span></div>\n";
self::$count++;
}
/**
* @see Walker::end_lvl()
* @since 3.0.0
*
* @param string $output Passed by reference. Used to append additional content.
* @param int $depth Depth of page. Used for padding.
*/
function end_lvl( &$output, $depth = 0, $args = array() ) {
$indent = str_repeat("\t", $depth);
$output .= "$indent</ul>\n"; //this is default output;
//if( $depth==0 ) //'0'==>1st-sub-level; '1'=2nd-sub-level; ....
//$output .= "$indent</ul></div></div>\n";
}
}
Этот код работает нормально - он добавляет div в конце навигационного меню с дополнительной информацией, которая мне нужна. (есть несколько других файлов JSON, но они здесь не нужны). Этот код все отлично работает.
Однако, если я изменю wp_nav_menu на ubermenu, ходунок больше не будет работать:
ubermenu('main', array( 'theme_location' => 'gold-bullion-menu', 'container' => '', 'fallback_cb' => '', 'menu_class' => 'nav', 'menu_id' => 'gold-bullion-menu', 'walker'=>new gold_bullion_menu_walker($json_data), 'echo' => false ) );
Я никогда не писал оригинальный код, и я не совсем понимаю ходоков - я предполагаю, что я делаю что-то не так, но не знаю, что именно.