网络选项页的正确表单操作URL是什么?

时间:2017-05-08 作者:jgangso

参考Settings API in Multisite - Missing update message

It states that:

对于网络选项页,正确的表单操作URL为:

wp管理员/网络/编辑。php?action=您的\\u option\\u名称

注意:前面没有“/”

Okay. Let\'s try it:

http://yourdomain.com/wp-admin/network/edit.php?action=your_option_page

零五

http://yourdomain.com/wp-admin/network/wp-admin/network/edit.php?action=your_option_page

Now, adding a \'/\' in front:

<form method="post" action="/wp-admin/network/edit.php?action=your_option_page">

Submits the form (correctly) to:

http://yourdomain.com/wp-admin/network/edit.php?action=your_option_page

That\'s right in most cases, I think?

然而,我从插件的一些用户那里得到了反馈,他们在提交选项表单时得到了以下信息:

找不到请求的URL/wp admin/network/edit。在此服务器上找不到php。

这是因为该用户的服务器配置不正确,还是我应该坚持使用以下表单操作URL以使其适用于不同的服务器路径:

<form method="post" action="edit.php?action=your_option_page">

Form still submits to correct URL:

http://yourdomain.com/wp-admin/network/edit.php?page=your_option_page

后一种形式的动作URL在wordpress支持的所有安装路径中都有效吗?(具有子域、目录路径等)。不同的web服务器如何:Apache、Nginx、IIS

您的域。comyourdomain。com/wordpress/subdomain。您的域。comsubdomain/您的域。com/wordpress/

1 个回复
最合适的回答,由SO网友:birgire 整理而成

在网络管理员中引用URL时,应考虑network_admin_url(). 核心功能admin_url() 对于非多站点设置。

所以试试这个,用add_query_arg 就像toscho一样uses 在回答中,链接到:

echo esc_url( 
    add_query_arg( 
       \'action\', 
       \'your_option_name\', 
       network_admin_url( \'edit.php\' ) 
    ) 
);
而不是使用可能错误的安装路径假设对其进行硬编码。

这里,我们转义输出以在HTML动作属性中使用。

结束

相关推荐

限制对Options-*.php页面的访问

我有一个名为manager 具有manage_options 和read 功能,我想限制他不要访问设置菜单,你可以说删除manage_options 功能,但事实并非如此,因为我需要这个cap(我使用的是发布到options.php的设置API)。我可以使用remove_menu_page() 但我们仍然可以通过直接键入url进行访问。