获取 wp-admin/admin 仪表板上的当前页面 URL?

Ame*_*iel 7 php wordpress query-variables

我试图在 wp-admin/admin 仪表板上获取当前页面 url,这可能吗?

我正在尝试使用这些代码,但我似乎无法让它工作。

global $wp;
$current_page = add_query_arg( $wp->query_vars, home_url( $wp->request ) );
Run Code Online (Sandbox Code Playgroud)

我想要的输出是这样的:https://example.com/1/wp-admin/admin.php?page=test 但相反,输出变成这样:/1/wp-admin/admin.php?page=test&=https://example.com/1

任何帮助是极大的赞赏

Tho*_* G. 7

我使用http_build_query()函数找到了一个非常简单的解决方案:

$current_page = admin_url(sprintf('admin.php?%s', http_build_query($_GET)));
Run Code Online (Sandbox Code Playgroud)

http_build_query()会自动将所有$_GET参数转换为查询字符串,该字符串可以使用 附加到基本管理 URL sprintf()

但是,这不支持具有不同名称的页面(例如:edit.php而不是admin.php)。您可以使用类似的东西作为辅助函数来支持每个管理页面:

/**
 * Get the base URL of the current admin page, with query params.
 *
 * @return string
 */
function get_current_admin_url(): string
{
    return admin_url(sprintf(basename($_SERVER['REQUEST_URI'])));
}

# on your admin page..
$current_page = get_current_admin_url();
Run Code Online (Sandbox Code Playgroud)

使用此函数时要小心,URL 可以由最终用户操作 /!\


ran*_*ank 6

要检索 WordPress 站点管理区域的 URL,您可以使用admin_url(): https: //developer.wordpress.org/reference/functions/admin_url/

它接受一条路径。admin_url('admin.php?page=test');所以如果你喜欢硬编码,你可以这样做。但我猜你想动态地拥有它。

我假设您的页面是管理菜单的一部分。每个菜单页面都会在 URL 中自动包含一个页面参数,例如page=test

您想要获取当前正在查看的页面的 URL,因此可以使用 来从 URL 中获取页面参数$_GET

将所有这些信息放在一起,您的代码可能如下所示:

$current_page = admin_url( "admin.php?page=".$_GET["page"] );