Я пытаюсь понять, когда требуется использование URL-адреса администратора. Если я сделаю это на моей странице плагинов, все они сделают то же самое.
<a href="<?php echo admin_url("admin.php?page=fap_playlist_manager"); ?>">Back to Playlist manager</a> <a href="admin.php?page=fap_playlist_manager">Back to Playlist manager</a> <a href="?page=fap_playlist_manager">Back to Playlist manager</a>
От чего это зависит?
Первое правило разработки WordPress – всегда использовать базовый API, если он доступен, обычно есть веская причина для его существования.
В этом случае вы предполагаете что-то о том, как вызываются файлы и какие URL они находятся. Например, такое допущение не получится, это (редко спрашивают, но об этом спрашивают) случай, когда кто-то хочет «прикрыть» «URL-адрес администратора и замените /wp-admin/admin.php?...
с помощью /admin/...
Для такого рода функций люди, скорее всего, переопределяют результат admin_url
, используя свой фильтр, и не удастся настроить ваши «жестко закодированные» URL-адреса, чтобы они вписывались.
Разумеется, для этого конкретного вопроса вероятность какой-либо заметной разницы между альтернативой 3 близка к нулю, но очень хорошая привычка никогда не принимать что-либо о структуре URL (или каталога) при разработке плагина или темы, которую вы намерение сделать доступным для всех.
Они все одинаковые, как вы упомянули.
Первый метод admin_url('URL HERE')
выведет URL-адрес администратора, а затем добавит к нему введенный URL. Это стандартный метод, поскольку кто-то мог изменить адрес администратора с помощью разных методов.
Вторая выводит ядро админ-файлов (которые используются для подключения к базе данных, отображения неосновных страниц и т. Д.), А затем вручную добавляет URL-адрес вашей страницы.
Третий добавляет ?page=fap_playlist_manager
к текущему URL-адресу. Это может вызвать проблемы при некоторых условиях перезаписи.
Лучшая практика заключается в том, чтобы перейти к основной функции admin_url()
а затем добавить к ней любой другой URL-адрес, используя admin_url('LINK HERE')
или admin_url().'/LINK HERE/'
. Оба они одинаковы.
EDIT: Как упоминалось @mark, этот admin_url().'/LINK HERE/'
не фильтрует LINK HERE
, ЕСЛИ его нужно фильтровать. В противном случае нет никакой разницы.