Добавьте пользовательскую навигационную панель в UberMenu вместо wp_nav_menu - PullRequest
0 голосов
/ 06 ноября 2018

Я работаю над веб-сайтом, в который добавлено пользовательское меню «Ходок». Код прекрасно работает для стандартного меню 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 ) );

Я никогда не писал оригинальный код, и я не совсем понимаю ходоков - я предполагаю, что я делаю что-то не так, но не знаю, что именно.

...