我在开发 WordPress 插件时遇到了这个问题。这是我正在处理的区域的代码片段:
add_submenu_page( 'admin_manager',
'Add Event',
'Add Event',
'manage_options',
'add_event&action=modify',
'add_event_handler' );
如您所见,在我的菜单项上我想添加“&action=modify”
'add_event&action=modify'
但是当我这样做时,Wordpress 拒绝我访问并说我没有适当的权限。没有额外的参数它工作得很好,wordpress 中是否有内置的东西不允许这样的事情?
有什么想法或解决方法吗?
最佳答案
slug 参数并不用于接收查询参数。如果您打算设置某种默认操作(我也认为“操作”查询很可能是 WordPress 本身使用的保留关键字),为什么不将页面设置为填充该参数是否默认存在?
我的猜测是您还需要其他参数,然后您可以使用表单发送数据(通过 POST 或 GET)以使用这些参数填充您的页面。例如:
<!-- SUBMENU PAGE -->
<form action="" method="GET">
<label>Select Action: </label>
<select name="jKern_action">
<option value="modify">Modify</option>
<option value="add">Add Event</option>
<option value="delete">Delete Event</option>
</select>
</form>
<?php
$action = isset($_GET['jKern_action']) ? $_GET['jKern_action'] : 'modify';
switch($action)
{
case 'add' :
?>
<!-- YOUR EVENT ADDING HTML HERE -->
<?php
break;
case 'delete' :
?>
<!-- DELETE HTML HERE -->
<?php
break;
default :
?>
<!-- DEFAULT MODIFICATION HTML -->
<?php
}
?>
这不是一个完美的例子,但我相信您可以了解这里所做的事情。如前所述,slug 参数并不是为了填充查询,您还应该为您的 GET 和 POST 键(以及 option 和 meta 键)命名为您的代码所特有的名称,以便将任何命名冲突的可能性降至最低。
正确使用子菜单导航而不依赖表单进行导航的另一个示例如下:
<a href="?page=add_event&jKern_action=add">Add Event</a>
<a href="?page=add_event&jKern_action=modify">Edit Event</a>
<a href="?page=add_event&jKern_action=delete">Delete Event</a>
<?php
...
?>
您最好的选择是查找一些插件作者如何有效使用 add_submenu_page() 函数的示例,但大多数情况下,您应该使用它并习惯正常的 WordPress 流程的工作方式。
祝你好运,请告诉我这是否有帮助。
关于WordPress add_submenu_page 不接受参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10806358/