在 wp-admin/admin 仪表板上获取当前页面 url?
Getting current page url on wp-admin/admin dashboard?
我正在 wp-admin/admin 仪表板上尝试获取当前页面 url,这可能吗?
我正在尝试使用这些代码,但似乎无法正常工作。
global $wp;
$current_page = add_query_arg( $wp->query_vars, home_url( $wp->request ) );
我想要的输出是这样的:https://example.com/1/wp-admin/admin.php?page=test
但是,输出变成这样:/1/wp-admin/admin.php?page=test&=https://example.com/1
非常感谢任何帮助
要检索您的 wordpress 站点管理区域的 URL,您可以使用 admin_url()
:https://developer.wordpress.org/reference/functions/admin_url/
它接受路径。所以如果你喜欢硬编码,你可以做 admin_url('admin.php?page=test');
。但我想你想动态地拥有它。
我想,您的页面是管理菜单的一部分。每个菜单页面自动在 URL 中有一个页面参数,例如 page=test
.
您想获得您正在查看的当前页面的 URL,因此您可以使用 $_GET
从 URL 中获取页面参数。
将所有这些信息放在一起,您的代码可能如下所示:
$current_page = admin_url( "admin.php?page=".$_GET["page"] );
我使用 http_build_query() 函数找到了一个非常完整的解决方案:
$current_page = admin_url(sprintf('admin.php?%s', http_build_query($_GET)));
http_build_query()
将自动将所有 $_GET
参数转换为查询字符串,可以使用 sprintf()
.
将其附加到基础管理员 URL
但是这不支持具有不同名称的页面(例如: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();
注意使用此函数,URLs 可以被最终用户操纵 /!\
您可以使用全局 $pagenow
或 $typenow
获取当前管理页面。
例如,如果您只想定位 edit.php?post_type=page
,您可以使用以下内容:
global $pagenow, $typenow;
if( ! is_admin() || 'edit.php' !== $pagenow || 'page' !== $typenow ) return;
我正在 wp-admin/admin 仪表板上尝试获取当前页面 url,这可能吗?
我正在尝试使用这些代码,但似乎无法正常工作。
global $wp;
$current_page = add_query_arg( $wp->query_vars, home_url( $wp->request ) );
我想要的输出是这样的:https://example.com/1/wp-admin/admin.php?page=test
但是,输出变成这样:/1/wp-admin/admin.php?page=test&=https://example.com/1
非常感谢任何帮助
要检索您的 wordpress 站点管理区域的 URL,您可以使用 admin_url()
:https://developer.wordpress.org/reference/functions/admin_url/
它接受路径。所以如果你喜欢硬编码,你可以做 admin_url('admin.php?page=test');
。但我想你想动态地拥有它。
我想,您的页面是管理菜单的一部分。每个菜单页面自动在 URL 中有一个页面参数,例如 page=test
.
您想获得您正在查看的当前页面的 URL,因此您可以使用 $_GET
从 URL 中获取页面参数。
将所有这些信息放在一起,您的代码可能如下所示:
$current_page = admin_url( "admin.php?page=".$_GET["page"] );
我使用 http_build_query() 函数找到了一个非常完整的解决方案:
$current_page = admin_url(sprintf('admin.php?%s', http_build_query($_GET)));
http_build_query()
将自动将所有 $_GET
参数转换为查询字符串,可以使用 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();
注意使用此函数,URLs 可以被最终用户操纵 /!\
您可以使用全局 $pagenow
或 $typenow
获取当前管理页面。
例如,如果您只想定位 edit.php?post_type=page
,您可以使用以下内容:
global $pagenow, $typenow;
if( ! is_admin() || 'edit.php' !== $pagenow || 'page' !== $typenow ) return;