【问题标题】:Getting current page url on wp-admin/admin dashboard?在 wp-admin/admin 仪表板上获取当前页面 url?
【发布时间】:2020-11-13 22:20:10
【问题描述】:

我试图在 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

非常感谢任何帮助

【问题讨论】:

  • 如果你只想要当前的 URL,你应该可以使用 $_SERVER['REQUEST_URI'],这是 add_query_arg 在幕后使用的。我想你也可以在技术上说$url = add_query_arg([]); 来得到它,也是
  • @ChrisHaas 我已经尝试了这两种方法,这是我得到的输出:/1/wp-admin/admin.php?page=test 来自 url 的主域不在输出中。

标签: php wordpress query-variables


【解决方案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"] );

【讨论】:

  • 我明白了,我真的必须使用他的 get 请求。我每天都在学习,非常感谢!
【解决方案2】:

您可以使用全局$pagenow$typenow 来获取当前管理页面。

例如,如果您只想定位edit.php?post_type=page,您可以使用以下内容:

global $pagenow, $typenow;
  if( ! is_admin() || 'edit.php' !== $pagenow || 'page' !== $typenow ) return;

【讨论】:

    【解决方案3】:

    我使用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();
    

    注意这个函数的使用,URL可以被最终用户/!\

    【讨论】:

      猜你喜欢
      • 2020-03-27
      • 1970-01-01
      • 2019-03-10
      • 2017-03-03
      • 2016-05-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-28
      相关资源
      最近更新 更多