管理员发布期间的全局状态

时间:2016-09-27 作者:Alan Storm

我最近将一些旧的WordPress代码转换为使用admin-post.php 机械装置

add_action( \'admin_post_myaction\', function(){
    //...my code to do stuff here...

    //redirect back to the main page
    $url = menu_page_url( \'my_original_menu_item\', false );
    wp_safe_redirect( $url );    

} );
正如您在上面的简化代码示例中所看到的,一旦我处理完我的帖子,我就会获取原始菜单项的URL,并将用户重定向回他们来自的页面。

然而,这是行不通的。这个menu_page_url 不返回菜单URL。当我调查这件事时,我发现global $_parent_pages; 变量menu_page_url 依赖项为空。我通过调用admin\\u菜单钩子修复了这个问题

do_action( \'admin_menu\', \'\' ); 
$url = menu_page_url( \'my_original_menu_item\', false );
wp_safe_redirect( $url );  
但这给我留下了几个问题。

以上是(在admin-post.php 请求)标准系统行为?或者我的系统是否有其他问题?

请求期间,系统可以加载哪些内容,不可以加载哪些内容admin-post.php? (可能是一个巨大的问题,感谢指导员)

  • 是上述模式(发布到admin-post.php, 使用重定向回menu_page_url 被认为是不错的WordPress实践,还是我滥用了admin-post.php?

    这里有经验的程序员——我只是想把WordPress的概念映射到web MVC框架中我熟悉的东西上。

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

    使用管理帖子时。php,管理帖子上没有加载菜单。php请求是标准的wordpress行为。在动作后挂钩上进行处理后重定向的标准做法是:wp_redirect( admin_url( \'admin.php?page=YOUR_PAGE\' ) );

    使用admin post时。php、wordpress将包含wp admin/includes/wp admin。php而不是wp admin/wp admin。php(Wordpress Admin Bootstrap)跳过一些设置。在此包含的文件中跳过的一个API调用是菜单生成文件。

    在Wordpress管理引导过程中,系统包括菜单。php,最终启动操作以加载和构建管理菜单。Post操作故意跳过了菜单加载处理。

    对于插件和表单,请发布到adin post。php被认为是正确的,处理后使用wp\\u redirect和admin\\u url将页面重定向到原始菜单项页面。

    相关推荐

    在将代码添加到函数后无法登录WordPress wp-admin。php

    我在函数末尾添加以下代码。php文件,用于根据自定义帖子的帖子标题填充分类法。问题是,当我添加代码时,尝试登录wp admin时会出现以下错误。非常感谢您能帮助我们弄清楚为什么会发生这种情况。Error:错误:由于意外输出,Cookie被阻止。有关帮助,请参阅此文档或尝试支持论坛。Code: <?php function update_custom_terms($post_id) { // only update terms if