Cum să folosești link-uri relative în paginile tale?

23 feb. 2011, 01:18:21
Vizualizări: 38.9K
Voturi: 8

În paginile mele web vreau să folosesc link-uri relative în loc de link-uri absolute.

Cu toate acestea, paginile nu permit cod PHP în interiorul lor, așa că nu pot folosi URL-uri într-o manieră relativă.

Cum poate cineva să obțină URL-uri relative în paginile WordPress astfel încât schimbarea numelor de domeniu să nu afecteze link-urile?

0
Toate răspunsurile la întrebare 8
0

WordPress are o funcție încorporată pentru eliminarea protocolului și a domeniului din URL-urile absolute, wp_make_link_relative, localizată în /wp-includes/formatting.php:

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

Pentru a aplica această funcție (de exemplu) la permalink-uri, pur și simplu adăugați un filtru, astfel:

add_filter( 'the_permalink', 'wp_make_link_relative' );

Deluxe Blog Tips arată cum să aplicați acest lucru la diferite tipuri de link-uri, asigurându-vă în același timp că link-urile din fluxuri RSS sau sitemap-uri nu sunt afectate:

add_action( 'template_redirect', 'rw_relative_urls' );
function rw_relative_urls() {
    // Nu face nimic dacă:
    // - Este un flux RSS
    // - Este un sitemap generat de plugin-ul 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() atunci când este folosită singură va returna calea absolută către blogul tău. Dar, dacă adaugi un argument, ca în exemplul meu de mai sus, va adăuga calea absolută în fața căii tale. Doar asigură-te că URL-ul tău nu conține o bară oblică la început (ex: /acest/link/s-ar/putea/sa/nu/functioneze).

În final, dacă WordPress-ul tău este instalat în root-ul serverului, poți folosi o cale relativă la server (aceasta folosește bara oblică la început pentru a indica începutul din root-ul serverului). Deci dacă blogul tău este instalat la http://www.me.com/blog atunci poți accesa link-urile tale relative în siguranță cu /blog/my_link.php.

13 mai 2011 23:05:30
2
23 feb. 2011 02:18:02
Comentarii

acest lucru vorbește doar despre permalink-uri, nu despre cum să folosești URL-uri relative în loc de cele absolute

pdeva pdeva
23 feb. 2011 02:53:39

Derulează în jos pe acea pagină sau, mai bine, http://codex.wordpress.org/Linking_Posts_Pages_and_Categories#Absolute_versus_Relative_Links

Bainternet Bainternet
23 feb. 2011 03:07:29
0

Obișnuiam să folosesc shortcode-uri cu get_bloginfo pentru căi relative în interiorul conținutului efectiv al postărilor. Aveam de gând să o transform într-un plugin complet, dar am crezut că cei de la Automatic au lansat deja unul, pe care acum nu îl mai găsesc. Iată un exemplu simplu despre cum funcționează, deoarece momentan nu îmi găsesc versiunea mea, din moment ce nu o mai folosesc, conform postării lui Bainternet, poate cei de la Automatic și-au dat seama și ei de asta..

O funcție simplă de shortcode care va returna URL-ul de bază al site-ului tău:

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

Dacă site-ul tău este example.com, atunci plasarea shortcode-ului [posty] în conținut va returna example.com ca text.

Pentru a folosi efectiv acest lucru, va trebui să personalizezi funcția folosind mai mulți parametri din get_bloginfo și să o înfășori în tag-urile HTML necesare http://codex.wordpress.org/Function_Reference/get_bloginfo

25 mar. 2011 04:17:29
0

folosește opțiunea implicită de legătură în WordPress, elimină numele de domeni și începe cu /, de exemplu

https://example.com/posts/post10

devine

/posts/post10

11 nov. 2020 22:53:07
0

Această funcție ar trebui să fie introdusă în fișierul functions.php al temei dumneavoastră. Ea va face toate permalinkurile relative.

// face linkurile relative la rădăcină
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' );

Imaginile din conținut ar trebui să utilizeze linkuri absolute DOAR DACĂ acele imagini sunt trimise către cititoarele de fluxuri (RSS). Dacă imaginile folosesc linkuri relative, cititoarele de fluxuri vor încerca să încarce imaginile de pe propriile lor domenii.

Există o mică scădere a performanței atunci când se folosesc linkuri relative pentru imagini. Cu toate acestea, nu pare să existe nicio diferență în cazul permalinkurilor relative.

Pe unele servere, este posibil să fie nevoie să adăugați un element base href cu rădăcina site-ului pentru a vă asigura că linkurile funcționează corect.

6 mai 2011 08:37:08
0

Cred că există un plugin Absolute Relative Links care va înlocui toate linkurile din paginile tale cu linkuri relative. Funcționează destul de bine, ceea ce înseamnă că nu va trebui să revii și să repari linkurile vechi care sunt încă absolute.

25 aug. 2011 18:04:25
1
-2

Acest tutorial vă arată o metodă de bază pentru a schimba legătura permanentă a articolului în una relativă. Am îmbunătățit această metodă pentru a face toate legăturile din WordPress relative. Codul final este aici.

23 feb. 2011 03:16:29
Comentarii

Legăturile goale nu ajută. Adaugă măcar o explicație.

fuxia fuxia
24 apr. 2011 11:44:46