¿Obtener la URL de la página actual en el panel de wp-admin/admin?

3 minutos de lectura

Estoy tratando de obtener la URL de la página actual mientras estoy en el panel de wp-admin/admin, ¿es posible?

Estoy tratando de usar estos códigos, pero parece que no puedo hacerlo funcionar.

global $wp;
$current_page = add_query_arg( $wp->query_vars, home_url( $wp->request ) );

La salida que quería es así: https://example.com/1/wp-admin/admin.php?page=test
Pero en cambio, la salida se vuelve así: /1/wp-admin/admin.php?page=test&=https://example.com/1

Cualquier ayuda es muy apreciada

  • Si solo desea la URL actual, debería poder usar $_SERVER['REQUEST_URI'] Que es que add_query_arg utiliza detrás de escena. Creo que técnicamente también puedes decir $url = add_query_arg([]); para conseguirlo también

    –Chris Haas

    13 de noviembre de 2020 a las 22:24

  • @ChrisHaas ya probé ambos, y este es el resultado que obtengo: /1/wp-admin/admin.php?page=test El dominio principal de la URL no está en la salida.

    – Amenadiel

    13 de noviembre de 2020 a las 22:38


Para recuperar la URL del área de administración de su sitio de wordpress, puede usar admin_url(): https://developer.wordpress.org/reference/functions/admin_url/

Acepta un camino. Entonces podrías hacer admin_url('admin.php?page=test'); si te gusta el código duro. Pero quieres tenerlo dinámicamente, supongo.

Supongo que su página es parte del menú de administración. Cada página de menú tiene automáticamente un parámetro de página en la URL como page=test.

Desea obtener la URL de la página actual que está viendo, por lo que puede obtener el parámetro de página de la URL usando $_GET.

Juntando toda esta información, su código puede verse así:

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

  • Ya veo, realmente tengo que usar la solicitud get. Aprendo todos los días, muchas gracias!!

    – Amenadiel

    15 de noviembre de 2020 a las 3:21

Puede utilizar el mundial $pagenow o $typenow para obtener la página de administración actual.

Por ejemplo, si desea orientar solo edit.php?post_type=pagepuedes usar lo siguiente:

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

avatar de usuario
tomas g

He encontrado una solución muy completa usando http_build_query() función :

$current_page = admin_url(sprintf('admin.php?%s', http_build_query($_GET)));

http_build_query() transformará automáticamente todo $_GET params en una cadena de consulta que se puede agregar a la URL de administración base usando sprintf().

Sin embargo, esto no admite páginas con un nombre diferente (p. ej.: edit.php en vez de admin.php). En su lugar, puede usar algo como esto, como una función de ayuda, para admitir todas las páginas de administración:

/**
 * 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();

Tenga cuidado con el uso de esta función, las URL pueden ser manipuladas por el usuario final /!\

Solo usa add_query_arg() función que detecta automáticamente la URL de la página actual (relativa) – https://developer.wordpress.org/reference/functions/add_query_arg/

¿Ha sido útil esta solución?