Я создаю плагин WordPress для пользовательского макета меню.Мне хорошо известно, что я мог бы так же легко внедрить это меню непосредственно в тему, и я довольно подробно ознакомился с функциями и ограничениями wp_nav_menu()
, плюс я уже попробовал и протестировал каждый уже созданный плагин для замены по умолчанию.Меню WordPress.
Я хочу использовать плагин, поскольку мой клиент будет реализовывать его на нескольких разных сайтах WordPress, многие из которых работают на разные темы - и большинство из них - темы, которые я не создавал, и я делаю это.не хочу переписывать свой код на случай, если они обновят тему в будущем.
Когда я искал способ реализовать меню в теме, я обнаружил, что с тех пор существует только два хороших метода.нет крючка или фильтра, вызываемого во время отображения меню.Первый заключается в изменении темы для поиска плагина (это похоже на метод, используемый PixoPoint и многими другими плагинами меню):
header.php:
if(function_exists('pixopoint_menu')){
pixopoint_menu();
} else {
wp_nav_menu();
}
Второй метод - это класс ходунков:
plugin.php:
class my_walker_class Extends Walker_Nav_Menu {
function start_el(&$output, $item, $depth, $args) {
/*
* Etc. Etc.
*/
}
}
header.php:
wp_nav_menu( Array( 'walker' => 'my_walker_class' ) );
Однако, как вы заметите, оба эти метода требуют модификации стандартного файла header.php.
В идеале я хотел бы просто заменить функцию wp_nav_menu()
, если мой плагин загружен,так как это дало бы поддержку моего плагина для большинства тем без необходимости редактировать какие-либо файлы темы.Есть ли хороший способ сделать это?Или есть лучший способ написать плагин меню, которого я не вижу?