Wordpress add_submenu_page不接受参数

时间:2012-05-29 20:36:19

标签: wordpress

我在开发Wordpress插件时遇到了这个问题。这是我正在使用的区域的代码片段:

add_submenu_page( 'admin_manager',
                  'Add Event',
                  'Add Event',
                  'manage_options',
                  'add_event&action=modify',
                  'add_event_handler' );

正如你所看到的,在我的菜单slug上我想添加'& action = modify'

'add_event&action=modify'

但是当我这样做时,Wordpress拒绝我访问,并说我没有适当的权限。它在没有额外参数的情况下工作正常,wordpress中是否包含了不允许这样的东西?

有任何想法或解决方法吗?

1 个答案:

答案 0 :(得分:2)

slug参数不打算接受查询参数。如果您打算设置某种默认操作(我也可以想象“操作”查询很可能是Wordpress本身使用的保留关键字),为什么不将页面设置为填充为如果参数默认存在?

我的猜测是你还需要其他参数,然后你可以使用Form发送数据(通过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键(以及选项和元键)命名,这样任何命名冲突的可能性都很小。

在不依赖表单导航的情况下正确使用子菜单导航的另一个例子是这样的:

<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流程如何工作。

祝你好运,如果有帮助,请告诉我。