向插件添加不应出现在侧边栏中的额外页面

时间:2016-02-06 作者:Blue42

我正在尝试向我的wordpress插件添加额外的页面,并通过链接、表单转发等链接到这些页面。

我不希望它们出现在左侧的菜单中,因此添加子菜单页面不是正确的方法。

当我尝试在链接中直接访问页面时,即出现权限错误(“您没有足够的权限访问此页面。”)同样,通过这种方法,我使用的是指向php页面的直接链接,而不是wordpress似乎想要的“slug”或内部指向页面/函数的东西。

我想知道如何添加表单“admin”的链接。php?page=create\\u item\'并将请求转发到我的插件中的功能/特定页面。

任何帮助都会很好:)

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

如果需要菜单中未显示的管理页面,请使用add_submenu_page 和设置$parentnull. 这将创建一个功能性页面,该页面不会在菜单中呈现。

add_action( \'admin_menu\', \'wpd_hidden_plugin_submenu_page\' );
function wpd_hidden_plugin_submenu_page() {
    add_submenu_page( 
        null,
        \'My Hidden Submenu Page\',
        \'My Hidden Submenu Page\',
        \'manage_options\',
        \'my-hidden-submenu-page\',
        \'my_hidden_submenu_page_callback\',
    );
}
用户将需要您指定的任何功能来访问这些页面。

如果要创建在管理界面上下文之外执行操作的操作链接,请使用admin_post_ action. 您使用add_action 将处理程序函数挂接到admin_post_ 再加上你的定制动作。请注意,有两个挂钩-用于登录和未登录的访问者。

// hook your handler function for logged in users
add_action( \'admin_post_my_action\', \'wpd_my_action_function\' );

//hook your handler function for non logged in users
add_action( \'admin_post_nopriv_my_action\', \'wpd_my_action_function\' );

function wpd_my_action_function(){
    // WordPress API works in here
    status_header( 200 );

    // do your plugin stuff

    // and always die() at the end to halt execution
    die();
}
要输出处理程序脚本的URL,请使用admin_url(). 注意动作段塞my_action 在中通过action 表单元素。这将触发挂钩函数。

<form action="<?php echo admin_url( \'admin-post.php\' ); ?>" method="post">
    <input type="hidden" name="action" value="my_action">
    <input type="hidden" name="data" value="some-data">
    <input type="submit" value="Submit">
</form>
<小时>Adding AJAX action handlersadmin_post_ 操作,只是挂接的标记名称不同,URL为admin-ajax.php.

add_action( \'wp_ajax_add_foobar\', \'prefix_ajax_add_foobar\' );
add_action( \'wp_ajax_nopriv_add_foobar\', \'prefix_ajax_add_foobar\' );

function prefix_ajax_add_foobar() {
    // Handle request then generate response using WP_Ajax_Response
}

相关推荐