Explorá

Paso a paso / 8 min de lectura

Función get_site_url de WordPress: Qué es y cómo usarla

colorful PHP code over a dark blue background

La función de WordPress get_site_url permite a los desarrolladores acceder a la URL del sitio actual o de cualquier sitio dentro de una red multisite. Veamos cómo funciona la función y algunos ejemplos de cómo usarla en tu sitio.

Puntos Clave

  • get_site_url recupera la URL del sitio de WordPress en el cual se está utilizando y cualquier sitio en una red multisite.
  • Podés usar get_site_url en plugins personalizados o editar el archivo functions.php de tu tema.

¿Qué es get_site_url en WordPress?

La función get_site_url recupera la URL del sitio actual. get_site_url utiliza la función get_option, entre otras, para obtener y devolver una cadena que representa la opción siteurl que se encuentra en la tabla wp_options de la base de datos.

En instalaciones individuales, get_site_url devuelve la URL del sitio actual. En instalaciones multisite, get_site_url puede devolver la URL del sitio actual o la URL de un sitio específico en la red.

¿Cómo Funciona la Función get_site_url en WordPress?

La definición de get_site_url está en el archivo link-template.php, que se encuentra en la carpeta principal de wp-includes:

function get_site_url( $blog_id = null, $path = '', $scheme = null ) {
    if ( empty( $blog_id ) || ! is_multisite() ) {
        $url = get_option( 'siteurl' );
    } else {
        switch_to_blog( $blog_id );
        $url = get_option( 'siteurl' );
        restore_current_blog();
    }

    $url = set_url_scheme( $url, $scheme );

    if ( $path && is_string( $path ) ) {
        $url .= '/' . ltrim( $path, '/' );
    }

    return apply_filters( 'site_url', $url, $path, $scheme, $blog_id );
}

get_site_url tiene 3 parámetros:

  • $blog_id: El ID del blog/sitio (por defecto es null).
  • $path: La ruta a agregar a la URL del sitio (por defecto es una cadena vacía).
  • $scheme: El esquema de la URL (http, https, etc.). El valor por defecto es null.

Con eso en mente, desglosaremos qué significa cada línea.

Paso 1: Comprobar si el ID del Blog Está Configurado o es Multisite

El primer bloque de código determina si el desarrollador proporcionó un $blog_id o si el sitio de WordPress actual es una instalación multisite:

function get_site_url( $blog_id = null, $path = '', $scheme = null ) {
    if ( empty( $blog_id ) || ! is_multisite() ) {
        $url = get_option( 'siteurl' );
    } else {
        switch_to_blog( $blog_id );
        $url = get_option( 'siteurl' );
        restore_current_blog();
    }

Si $blog_id está vacío o el sitio no es parte de una red multisite, la función get_option obtiene la opción siteurl del sitio actual.

Si $blog_id está configurado y el sitio es parte de una red multisite, cambia al blog especificado usando switch_to_blog( $blog_id). switch_to_blog permite a los desarrolladores extraer publicaciones y otra información de otros sitios al cambiar el contexto actual.

Usando switch_to_blog, get_site_url recupera la opción siteurl para ese blog y luego vuelve al contexto del blog actual usando restore_current_blog.

Paso 2: Establecer el Esquema de URL

La siguiente línea establece el esquema de URL (http o https) basado en el parámetro $scheme. Si $scheme es null, la función usa el esquema actual del sitio.

$url = set_url_scheme( $url, $scheme );

Paso 3: Añadir la Ruta

Si se proporciona el parámetro $path y es una cadena, la función agrega su valor a la URL. ltrim( $path, '/' ) elimina cualquier barra inicial de la ruta para evitar dobles barras en la URL.

if ( $path && is_string( $path ) ) {
    $url .= '/' . ltrim( $path, '/' );
}

Paso 4: Aplicar Filtros y Devolver URL

La función apply_filters usa 'site_url' como gancho, $url como el valor a filtrar, y $path, $scheme y $blog_ID para el filtro.

return apply_filters( 'site_url', $url, $path, $scheme, $blog_id );

Finalmente, la función devuelve la URL modificada.

¿Cómo usar la Función get_site_url en WordPress?

Algunos usos potenciales de get_site_url incluyen:

  • Generar enlaces a uno de tus subsitios en una red multisite.
  • Forzar HTTPS en un enlace.
  • Generar enlaces dinámicos basados en condiciones específicas o interacciones de usuario.
  • Generar endpoints de API.

Exploraremos un par de ejemplos de cómo usar get_site_url en tu sitio de WordPress.

Usar get_site_url en Instalaciones Individuales

Vamos a usar get_site_url para mostrar un cuadro de texto en tus publicaciones de blog. Esta función capturará la URL de tu sitio en una variable y la mostrará como un cuadro de texto negro con texto blanco en todas las páginas de tu sitio.

Accedé al archivo functions.php de tu tema para añadir el código. Estamos utilizando el tema Twenty Twenty-Four, por lo que nuestro archivo functions.php está ubicado en public > wp-content > themes > twentytwentyfour.

Agregá el siguiente código:

if ( ! function_exists ( 'display_text_box' ) ) :
    function display_text_box() {
        if ( is_single() ) : // Comprueba si la página es una sola página, como una publicación de blog
            // Captura la URL del sitio en una variable
            $url = get_site_url();

            // Muestra la URL del sitio en un cuadro de texto que aparece sobre cada página
            echo '<p style="position: absolute;
            font-size: 25px;
            top: 100px;
            right: 100px;
            padding: 10px;
            background-color: #000000;
            color: #FFFFFF;">La URL de este sitio es: ' . $url . '</p>';
        endif;
    }
endif;

add_action( 'wp_footer', 'display_text_box' );

Así es como se verá esta función en tu sitio en vivo:

Una publicación de blog de WordPress con un cuadro de texto negro en la esquina superior derecha

El texto dice, La URL de este sitio es: https://test-site.local. Este ejemplo fue creado en un sitio local usando Local by Flywheel; si probás esto en un sitio en vivo, la URL sería https://test-site.com.

Para confirmar si la URL que se muestra es correcta, andá a Ajustes > General.

La interfaz de 'Ajustes Generales' de WordPress, resaltando las configuraciones de 'Dirección de WordPress (URL)' y 'Dirección del sitio (URL)'

Las URLs en las cajas de texto de Dirección del sitio (URL) y Dirección de WordPress (URL) deberían ser las mismas que las mostradas en el cuadro de texto de nuestra función, ya que, la mayoría del tiempo, tus direcciones de Sitio y WordPress son las mismas.

En algunos casos, como cuando instalás WordPress en un subdirectorio, la dirección del Sitio y WordPress diferirán porque corresponden a diferentes claves en la tabla wp_options. La Dirección del sitio corresponde a la clave siteurl, y la Dirección de WordPress corresponde a la clave home.

En casos donde tu instalación de WordPress está en un subdirectorio, las claves home y siteurl tendrán valores distintos ya que la instalación no está en el directorio raíz de tu sitio web.

Usar get_site_url en Instalaciones Multisite

También podés usar get_site_url para mostrar las URLs de múltiples sitios de la misma red multisite utilizando el parámetro $blog_id.

Para este ejemplo, tenemos una red multisite con tres subdominios: Subdominio 1, Subdominio 2 y Subdominio 3.

Agregaremos una versión ligeramente modificada del código anterior en el archivo functions.php del sitio principal para mostrar las URLs del sitio principal y todos los subdominios:

if ( ! function_exists ( 'display_text_box' ) ) :
	function display_text_box() {
		if ( is_single() ) : // Comprueba si la página es una sola página, como una publicación de blog
			// Captura la URL del sitio en una variable
			$url_subdomain_main_site = get_site_url(1);
			$url_subdomain_one = get_site_url(2);
			$url_subdomain_two = get_site_url(3);
			$url_subdomain_three = get_site_url(4);

			// Muestra la URL del sitio en un cuadro de texto que aparece sobre cada página
			echo '<p style="position: absolute;
			font-size: 18px;
			top: 100px;
			right: 100px;
			padding: 10px;
			background-color: #000000;
			color: #FFFFFF;">La URL del sitio principal es: ' . $url_subdomain_main_site .
			'<br>' . 'La URL del Subdominio 1 es: ' . $url_subdomain_one .
			'<br>' . 'La URL del Subdominio 2 es: ' . $url_subdomain_two . 
			'<br>' . 'La URL del Subdominio 3 es: ' . $url_subdomain_three .'</p>';
		endif;
	}
endif;

add_action( 'wp_footer', 'display_text_box' );

Así es como se verá esta función en tu sitio en vivo:

Una publicación de blog de WordPress con un cuadro de texto negro en la esquina superior derecha

El cuadro de texto dice:

La URL del sitio principal es: https://test-multisite-network.local
La URL del Subdominio 1 es: https://subdomain-1.test-multisite-network.local
La URL del Subdominio 2 es: https://subdomain-2.test-multisite-network.local
La URL del Subdominio 3 es: https://subdomain-3.test-multisite-network.local

En una instalación multisite, el ID del sitio 1 se refiere al primer (principal) sitio creado, y todos los siguientes subsitios reciben un ID correspondiente al orden en que se fueron creando.

get_site_url Te Ayuda a Capturar y Mostrar la Dirección de WordPress

La función get_site_url obtiene la URL de tu sitio actual o de cualquiera de los sitios en tu red multisite. Puede ser útil para generar enlaces, forzar HTTPS en un enlace y generar enlaces dinámicos basados en condiciones específicas o interacciones del usuario.

Ahora que sabés cómo funciona la función, comenzá a usarla para personalizar la funcionalidad de tu sitio.

Si encontraste útil este post, leé nuestro blog y revisá nuestros recursos para más información y guías.