Tecnología WordPress

Cómo obtener la URL actual en WordPress

Es muy normal que cuando estamos desarrollando con WordPress, necesitemos conocer la URL actual que está visualizando el usuario. Por lo general, nos valdrán los condicionales que nos ofrece WordPress, al estilo de is_page(), is_category()… o de los que ofrece WooCommerce: is_woocommerce(), is_cart(), is_checkout(), etc.

Pero a veces, necesitaremos afinar más. ¿Por qué?

  • Porque queramos excluir algún fichero JavaScript o CSS de algun vista para optimizar al máximo la carga de la web
  • Porque queramos hacer algún tipo de redirección, para obtener por ejemplo siempre la URL canónica de un elemento y evitar URLs duplicadas de un mismo contenido
  • Por cualquier otra casuística que se os de, donde los condicionales estándares no sean suficientes

Así que hoy os traigo un trozo de código para este problema: conocer en qué URL está un usuario cuando está visitando tu web. Tenemos dos variaciones, en los casos donde hay un multisitio y en los casos donde no está activado el multisitio, ¿por qué? Porque la función home_url() te devolvería una parte de la URL repetida.

Función en PHP para conocer la URL actual en WordPress

Os dejo una función con todo lo necesario y abajo una breve explicación.

function cod_obtener_url_actual(){
    if( is_multisite() ){
        $parts = parse_url( home_url() );
        $current_uri = "{$parts['scheme']}://{$parts['host']}" . add_query_arg( NULL, NULL );
    }
    else{
        $current_uri = home_url( add_query_arg( NULL, NULL ) );
    }

    return $current_uri;
}

Si os fijáis el funcionamiento es básico, empezamos por lo más sencillo, el caso de que no sea multisitio. La función add_query_arg tiene 3 argumentos, los dos primeros, los arrays de claves y valores de los parámetros a añadir a la URL, son obligatorios. Como no queremos meter parámetro alguno, pasamos dos NULL. El tercer valor no lo usamos para que use como base el valor de $_SERVER[‘REQUEST_URI’], la URL relativa que es la que toma por defecto, así que añadiendo la URL inicial de WordPress tenemos todo al completo: la parte inicial y la relativa, la URL completa.

El caso del multisitio es similar, pero home_url() ofrece una parte de la URL repetida, extraemos la parte que nos interesa, el esquema y el host, y le añadimos parte de URL relativa que nos ofrece add_query_arg().

Con esto tenemos una función que en cualquier caso, multisitio o no, nos ofrecerá el resultado que queremos.

Nota: Hay una valoración incrustada en esta entrada, por favor, visita esta entrada para valorarla.

Almacenamos las IPs desde la que se envían las valoraciones para evitar fraudes

Francisco Javier Carazo Gil

Entradas recientes

¿Por qué falla Bizum en WooCommerce? 9 causas

Por qué falla Bizum WooCommerce: detecta errores de credenciales, firma, entorno y pedidos para recuperar…

hace % días

Plugin gratuito Redsys WordPress: qué revisar

Elige un plugin gratuito Redsys WordPress con criterio: compatibilidad, seguridad, configuración bancaria y límites para…

hace % días

Qué necesito para activar CECA Online en mi web

¿Qué necesito para activar CECA Online? Revisa contrato bancario, datos del terminal, seguridad, pruebas y…

hace % días

Cómo elegir una pasarela para suscripciones

Aprende a elegir una pasarela para suscripciones en WordPress: revisa recurrencia, compatibilidad, seguridad y soporte…

hace % días

Plugin Bizum WordPress para cobrar con control

Elige un plugin Bizum WordPress compatible con tu flujo de venta, configura la pasarela bancaria…

hace % días

Cómo aceptar CECA en reservas de WordPress

Aprende cómo aceptar CECA en reservas WordPress, configurar pagos seguros y confirmar cada reserva sin…

hace % días