Странное поведение при создании ссылки подменю


Я пытаюсь разработать плагин, который должен добавить две страницы в меню боковой панели панели мониторинга. Одна из них является основной категорией. Все в порядке, за исключением второго пункта подменю на странице настроек. После прочтения примерно такой же части кодекса и поиска в Интернете подобных проблем я не нашел решения.

Я что-то упускаю из виду? (первое подменю предназначено для создания дубликата целевой страницы, из курс)

Код

add_action('admin_menu', 'my_add_submenu');
function my_add_submenu(){
    add_menu_page( 'Author Discussion', 'Discussion', 'manage_options', 'author_discuss', 'author_discuss_build_page', plugins_url( 'author-discussion/images/icon.png' ), 999 );
    add_submenu_page( 'author_discuss', 'Author Discussion', 'Author Discussion', $menu_capability, 'author_discuss' );
    add_submenu_page( 'author_discuss', 'Author Discussion Settings', 'Settings', 'manage_options', 'author_discuss_settings', 'author_discuss_settings_page' );
}

function author_discuss_build_page(){
    //do something
}

function author_discuss_settings_page() { 
    //do something
}

Эффект

Одна вещь, которую я замечаю, когда я нажимаю на ссылку в боковой панели, она перенаправляется на:

  • /wp-администратор/автор_дискусс_сеттинги
  • вместо /wp-администратор/admin.php?страница=author_discuss_settings

Я чувствую, что упускаю что-то очевидное.

Что я пробовал?

Я последовал последнему примеру в Кодексе WordPress, расположенном здесь.

У меня есть попытался изменить действие с admin_menu на admin_init, чтобы посмотреть, изменит ли это результат. URL-адрес печатается, как и ожидалось, /wp-admin/admin.php?страница=author_discuss_settings, но выдает ошибку "У вас недостаточно разрешений".

Author: Brandon White, 2014-03-06

1 answers

На той же странице в кодексе у вас есть это:

ПРИМЕЧАНИЕ: Если вы столкнулись с сообщением "У вас недостаточно разрешений для доступа к этой странице". на экране wp_die(), значит, вы подключились слишком рано.

Таким образом, это частично отвечает на ваш вопрос.

Вторая часть, следующий код должен работать:

add_action('admin_menu', 'my_add_submenu');
function my_add_submenu(){
      add_menu_page( 'Parent', 'Parent', 'manage_options', 'author_discuss', 'author_parent' ); 
      add_submenu_page( 'author_discuss', 'Author Discussion', 'Author Discussion', 'manage_options', 'author_discuss' );
      add_submenu_page( 'author_discuss', 'Author Discussion Settings', 'Settings', 'manage_options', 'author_discuss_settings', 'author_discuss_settings_page' );
}

function author_parent() {

}

function author_discuss_settings_page() { 
    //do something
}

Проверьте свои функции и посмотрите, нет ли какой-нибудь опечатки.

 2
Author: JMau, 2014-03-06 20:30:50