¿Cómo usar enlaces relativos en mis páginas?

23 feb 2011, 01:18:21
Vistas: 38.9K
Votos: 8

En mis páginas web quiero usar enlaces relativos en lugar de enlaces absolutos.

Sin embargo, las páginas no permiten código PHP dentro de ellas, por lo que no puedo generar URLs de manera relativa.

¿Cómo se pueden obtener URLs relativas dentro de páginas de WordPress para que el cambio de nombres de dominio no afecte a los enlaces?

0
Todas las respuestas a la pregunta 8
0

WordPress tiene una función integrada para eliminar el protocolo y el dominio de URLs absolutas, wp_make_link_relative, ubicada en /wp-includes/formatting.php:

function wp_make_link_relative( $link ) {
    return preg_replace( '|https?://[^/]+(/.*)|i', '$1', $link );
}

Para aplicar esta función a (por ejemplo) los enlaces permanentes, simplemente añade un filtro, así:

add_filter( 'the_permalink', 'wp_make_link_relative' );

Deluxe Blog Tips muestra cómo aplicar esto a varios tipos de enlaces, asegurándose de que los feeds y los mapas del sitio no se vean afectados:

add_action( 'template_redirect', 'rw_relative_urls' );
function rw_relative_urls() {
    // No hacer nada si:
    // - Es un feed
    // - Es un sitemap del plugin WordPress SEO
    if ( is_feed() || get_query_var( 'sitemap' ) )
        return;
    $filters = array(
        'post_link',
        'post_type_link',
        'page_link',
        'attachment_link',
        'get_shortlink',
        'post_type_archive_link',
        'get_pagenum_link',
        'get_comments_pagenum_link',
        'term_link',
        'search_link',
        'day_link',
        'month_link',
        'year_link',
    );
    foreach ( $filters as $filter )
    {
        add_filter( $filter, 'wp_make_link_relative' );
    }
}
6 sept 2012 18:56:48
0
$my_url = 'my/relative/url.php';
echo site_url($my_url);

site_url() cuando se usa por sí sola devolverá la ruta absoluta a tu blog. Pero, si le añades un argumento, como en mi ejemplo anterior, antepondrá la ruta absoluta a tu ruta. Solo asegúrate de que tu URL no contenga una barra inicial (ej: /esto/puede/no/funcionar).

Finalmente, si por casualidad tienes tu instalación de WordPress en la raíz de tu servidor, puedes usar una ruta relativa al servidor (esto usa la barra inicial para indicar que comienza en la raíz del servidor). Así que si tu blog está instalado en http://www.me.com/blog entonces puedes acceder a tus enlaces relativos de forma segura con /blog/my_link.php.

13 may 2011 23:05:30
2
23 feb 2011 02:18:02
Comentarios

esto solo habla sobre los enlaces permanentes, no sobre cómo usar URLs relativas en lugar de absolutas

pdeva pdeva
23 feb 2011 02:53:39

Desplázate hacia abajo en esa página o mejor aún http://codex.wordpress.org/Linking_Posts_Pages_and_Categories#Absolute_versus_Relative_Links

Bainternet Bainternet
23 feb 2011 03:07:29
0

Solía usar shortcodes con get_bloginfo para rutas relativas dentro del contenido real de las publicaciones. Iba a convertirlo en un plugin completo, pero juraría que los de Automatic lanzaron uno que ya no puedo encontrar. Aquí hay un ejemplo simple de cómo funciona, ya que no puedo encontrar el mío en este momento porque ya no lo uso, como menciona el post de Bainternet, tal vez los de Automatic también se dieron cuenta de esto...

Una función simple de shortcode que devolverá tu URL base:

function my_relative_post_image_link() {
$linky = get_bloginfo('wpurl');
echo $linky;
}
add_shortcode('posty', 'my_relative_post_image_link');

Si tu sitio es ejemplo.com, entonces al poner el shortcode [posty] en tu contenido devolverá ejemplo.com como texto.

Para hacer un uso real de esto, necesitarás personalizar la función usando más parámetros de get_bloginfo y envolverla en las etiquetas HTML necesarias. http://codex.wordpress.org/Function_Reference/get_bloginfo

25 mar 2011 04:17:29
0

usa la opción de enlace predeterminada en WordPress, elimina el nombre del dominio y comienza con /, por ejemplo

https://example.com/posts/post10

se convierte en

/posts/post10

11 nov 2020 22:53:07
0

Esta función debe colocarse en el archivo functions.php de tu tema. Convertirá todos los enlaces permanentes en relativos.

// hacer la raíz relativa
function make_href_root_relative($input) {
    return preg_replace('!http(s)?://' . $_SERVER['SERVER_NAME'] . '/!', '/', $input);
}
function root_relative_permalinks($input) {
    return make_href_root_relative($input);
}
add_filter( 'the_permalink', 'root_relative_permalinks' );

Las imágenes en el contenido deben usar enlaces absolutos SI esas imágenes se envían a lectores de feeds. Si las imágenes usan enlaces relativos, los lectores de feeds intentarán cargar las imágenes desde sus propios dominios. También hay un pequeño impacto en el rendimiento al usar enlaces relativos para imágenes. No parece haber diferencia con los enlaces permanentes relativos.

En algunos servidores, puede ser necesario agregar una etiqueta base href con la raíz de tu sitio para asegurar que los enlaces funcionen como se espera.

6 may 2011 08:37:08
0

Creo que existe un plugin de Absolute Relative Links que reemplazará todos los enlaces en tus páginas con enlaces relativos. Funciona de manera bastante eficiente, lo que significa que no tendrás que volver atrás y corregir enlaces antiguos que aún sean absolutos.

25 ago 2011 18:04:25
1
-2

Este tutorial te muestra una forma básica de cambiar el enlace permanente de las entradas (permalink) a relativo. También mejoré ese método para hacer que todos los enlaces en WordPress sean relativos. El código final está aquí.

23 feb 2011 03:16:29
Comentarios

Los enlaces sin contexto no ayudan. Añade al menos una explicación.

fuxia fuxia
24 abr 2011 11:44:46