admin_url in plugins

时间:2017-04-29 作者:Toniq

我试图了解何时需要使用管理员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>
这取决于什么?

2 个回复
SO网友:Johansson

正如你提到的,它们都是一样的。

第一种方法admin_url(\'URL HERE\') 将输出管理员的URL,然后将输入的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, IF 需要对其进行过滤。否则,没有区别。

SO网友:Mark Kaplun

wordpress开发的第一条规则是始终使用一个核心API。如果有一个API可用,那么它的存在通常是有充分理由的。

在本例中,您假设了一些关于如何调用文件及其所在URL的信息。例如,如果这样的假设将失败,那么(很少询问,但有人询问)是否有人想要“美化”管理员url并替换/wp-admin/admin.php?... 具有/admin/.... 对于这种功能,人们很可能会覆盖admin_url 通过使用其过滤器,将无法调整“硬编码”URL以适应。

当然,对于这个特定的问题,3个备选方案之间出现任何明显差异的可能性几乎为零,但当您开发一个插件或一个您打算让每个人都可以使用的主题时,最好不要对URL(或目录)结构做任何假设。