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

RedSys para Contact Form 7 ahora muestra el justificante y el motivo del rechazo en la página de gracias

Ya está disponible la versión 2.2 de Contact Form 7 – Integración con RedSys, y…

hace % días

¿Qué aporta la integración de Bizum y métodos similares en el proceso de pago?

El comercio electrónico español, que se encuentra en pleno crecimiento y transformación, vive actualmente un…

hace % días

Pagos recurrentes en Contact Form 7: suscripciones con RedSys, paso a paso

Hasta ahora, la integración de Contact Form 7 con RedSys solo sabía cobrar pagos únicos:…

hace % días

Cuotas personalizadas con RedSys

El pago fraccionado de RedSys para WooCommerce lleva un tiempo permitiendo dividir el precio de…

hace % días

Contact Form 7 – Integración con RedSys ya habla catalán, gallego y euskera

Ya está disponible la versión 1.24 de Contact Form 7 - Integración con RedSys, y…

hace % días

Calendario de pagos a medida en WooCommerce Subscriptions: cobra en las fechas que tú decidas

Hasta ahora, cobrar una suscripción en WooCommerce significaba aceptar una regla muy simple: eliges un…

hace % días