Además de la respuesta de Rajeev Vyas, no es necesario pasar ningún parámetro no vacío add_query_arg()
. Lo siguiente siempre me ha funcionado bien:
// relative current URI:
$current_rel_uri = add_query_arg( NULL, NULL );
// absolute current URI (on single site):
$current_uri = home_url( add_query_arg( NULL, NULL ) );
La función recurre $_SERVER[ 'REQUEST_URI' ]
y se aplica urlencode_deep()
a ella. Ver https://github.com/WordPress/WordPress/blob/3.8/wp-includes/functions.php#L673
Editar:
como $_SERVER[ 'REQUEST_URI' ]
representa la entrada del usuario sin filtrar, siempre se debe escapar del valor de retorno de add_query_arg()
cuando se cambia el contexto. Por ejemplo, utilícelo esc_url_raw()
para uso de base de datos esc_attr()
o esc_url()
para HTML.
Actualizar
El ejemplo mostrado que debería crear un URI absoluto (que contiene el esquema y el host) no funciona en sitios múltiples con subdirectorios, ya home_url()
que devolvería el URI completo, incluido un segmento de ruta. Una mejor solución para el código multisitio sería esta:
// absolute URI in multisite aware environment
$parts = parse_url( home_url() );
$current_uri = "{$parts['scheme']}://{$parts['host']}" . add_query_arg( NULL, NULL );
El núcleo de WordPress no admite puerto, usuario o contraseña en una URL de sitio multisitio, por lo que esto debería ser suficiente.
No es una función, pero definitivamente usa el código de WordPress.
http://kovshenin.com/2012/current-url-in-wordpress/
fuente
year
se agregan a la cadena de consulta, aunque no hayan estado allí antes, y otros parámetros, por ejemplo, elreplytocom
parámetro, se pierden. ¿Conoces una solución para esto?1)
$_SERVER['REQUEST_URI']
- Devuelve la URL para acceder a la página que está ejecutando el script. Si necesita escribirhttp://www.example.com/product.php?id=5
para acceder a la página,$_SERVER['REQUEST_URI']
regresa/product.php?id=5
.2)
$_SERVER['DOCUMENT_ROOT']
- Devuelve el directorio raíz del servidor que se especifica en el archivo de configuración del servidor. Esta variable generalmente devuelve la ruta como/usr/yoursite/www
en Linux yD:/xamps/xampp/htdocs
en Windows.3)
$_SERVER['HTTP_HOST']
- Devuelve el nombre del host como se encuentra en el encabezado http. Esta variable generalmente devuelve la ruta comoexample.com
cuando la encuentrashttp://example.com
en la barra de direcciones del navegador y regresawww.example.com
cuando la veshttp://www.example.com
en la barra de direcciones. Esto es bastante útil cuando debe preservar la sesión mientras realiza el pago en línea utilizando PHP, ya que la sesión almacenadahttp://example.com
no es la misma que para elhttp://www.example.com
.4)
$_SERVER['HTTP_USER_AGENT']
- Devuelve los detalles del agente de usuario (navegador) que accede a la página web. Podemos usarstrpos($_SERVER["HTTP_USER_AGENT"],”MSIE”)
para detectar Microsoft Internet Explorer o usted puedestrpos($_SERVER["HTTP_USER_AGENT"],”Firefox”)
detectar el navegador Firefox en PHP.5)
$_SERVER['PHP_SELF']
- Devuelve el nombre del archivo del script que se está ejecutando actualmente. Supongamos que está accediendo a la URL yhttp://www.example.com/product.php?id=5
luego$_SERVER['PHP_SELF']
regresa/product.php
en su secuencia de comandos.6)
$_SERVER['QUERY_STRING']
- Devuelve la cadena de consulta si la cadena de consulta se utiliza para acceder al script que se está ejecutando actualmente. Las cadenas de consulta son aquellas cadenas que están disponibles después de "?" sign.si usa$_SERVER['QUERY_STRING']
en el script ejecutando la siguiente URL,http://www.example.com/index.php?id=5&page=product
entonces regresaid=5&page=product
en su script.7)
$_SERVER['REMOTE_ADDR']
- Devuelve la dirección IP de la máquina remota que accede a la página actual. Pero no puede confiar en$_SERVER['REMOTE_ADDR']
obtener la dirección IP real de la máquina del cliente. Consulte este artículo para saber cómo obtener direcciones IP reales en PHP.8)
$_SERVER['SCRIPT_FILENAME']
- Devuelve la ruta absoluta del archivo que se está ejecutando actualmente. Devuelve la ruta comovar/example.com/www/product.php
en Linux y la ruta comoD:/xampp/xampp/htdocs/test/example.php
en Windows.fuente
wp_guess_url es lo que estás buscando.
fuente
add_query_args( null, null )
creará un elemento de matriz con la clave vacía ($qs[""] = null
) aunque no afectará el resultado.De acuerdo con add_query_arg () | Función | Recursos para desarrolladores de WordPress , los parámetros segundo y tercero son opcionales y pueden omitirse.
add_query_args( null, null )
Puede ser más corto .También existe la versión más corta, aunque no se recomienda ya que el primer parámetro es el parámetro requerido.
Además, cabe destacar que tanto
home_url( add_query_vars( [] ) )
yhome_url( add_query_arg( null, null ) )
podría no volver URL real cuando WordPress se instala en un subdirectorio.por ejemplo,
https://example.com/wp/wp/foo
podría ser devuelto cuando WordPress está instalado enhttps://example.com/wp/
.Actualización: 2017/01/23
Mi versión se basa en la solución de David para obtener una URL absoluta.
fuente
Para mí
<?php esc_url(the_permalink()); ?>
funciona (en una página de archivo con paginación).fuente
the_permalink()
repite el permalink escapado, no devuelve nada. Elesc_url()
no recibe nada, y si lo fuera, sería una URL escapada.Ahora no tengo paginación, pero puedes usar esta función para obtener la URL dentro del bucle
O bien, si no prefiere usar php, también puede optar por el método jquery aquí (esto lo ayudará a que funcione fuera del ciclo)
o si prefiere usar la función php, necesita obtener la identificación fuera del ciclo
fuente
the_permalink()
no necesita la identificación cuando se llama dentro del bucle.Puede usar la función wordpress para obtener la URL de la página actual
Esto le devolverá el enlace URL de la página curremt.
fuente
the_permalink()
se imprimirá la URL de la entrada actual. Pero no funcionará para otras solicitudes y no incluirá variables como la paginación. Entonces, no es realmente la respuesta que @ René Schubert está buscando.