Если я вас правильно понял, вы хотите вывести разные кнопки, относящиеся к глубине пункта меню.Я думаю, самым простым способом вы могли бы просто проверить переменную $depth
и изменить текст кнопки.
Быстрое решение:
public function start_lvl(&$output, $depth = 0, $args = array()) {
$indent = str_repeat("\t", $depth);
$buttontext = 'First Button';
if ($depth == 2) {
$buttontext = 'Second Button';
}
if ($depth == 3) {
$buttontext = 'Third Button';
}
if ($depth == 4) {
$buttontext = 'Fourth Button';
}
$output .= "\n$indent <button>$buttontext</button><ul class=\"sub-menu\">\n";
}
Вы можетерасширить это с помощью большего количества переменных (например, действие onClick).Или более чистый подход заключается в создании нового метода внутри m2o_walker_nav_menu, который возвращает переменные представляющих кнопок в зависимости от их глубины.
Более чистое решение:
public function start_lvl(&$output, $depth = 0, $args = array()) {
$indent = str_repeat("\t", $depth);
$buttondata = self::getButtonData($depth);
$output .= "\n" . $indent . "<button onClick='" . $buttondata['action'] . "'>" . $buttondata['text'] . "</button><ul class=\"sub-menu\">\n";
}
public static function getButtonData($depth) {
$buttons = [
[
'text' => 'First Button',
'action' => 'myFirstFunction'
],
[
'text' => 'Second Button',
'action' => 'mySecondFunction'
],
[
'text' => 'Third Button',
'action' => 'myThirdFunction'
]
];
return $buttons[$depth];
}
Пожалуйста, сохраняйтеИмейте в виду, что это не проверено, потому что у меня не установлена WordPress.
Надеюсь, это поможет.