Come utilizzare i link relativi nelle mie pagine?

23 feb 2011, 01:18:21
Visualizzazioni: 38.9K
Voti: 8

Nelle mie pagine web voglio utilizzare link relativi invece di link assoluti.

Tuttavia, le pagine non consentono codice PHP al loro interno, quindi non posso generare URL in modo relativo.

Come si possono ottenere URL relativi all'interno delle pagine WordPress in modo che il cambio del nome di dominio non influisca sui collegamenti?

0
Tutte le risposte alla domanda 8
0

WordPress ha una funzione integrata per rimuovere protocollo e dominio dagli URL assoluti, wp_make_link_relative, situata in /wp-includes/formatting.php:

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

Per applicare questa funzione (ad esempio) ai permalink, basta aggiungere un filtro, in questo modo:

add_filter( 'the_permalink', 'wp_make_link_relative' );

Deluxe Blog Tips mostra come applicarlo a diversi tipi di link, assicurandosi che i feed e i link della sitemap non vengano modificati:

add_action( 'template_redirect', 'rw_relative_urls' );
function rw_relative_urls() {
    // Non fare nulla se:
    // - Nel feed
    // - Nella 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 set 2012 18:56:48
0
$my_url = 'my/relative/url.php';
echo site_url($my_url);

site_url() quando utilizzata da sola restituirà il percorso assoluto del tuo blog. Tuttavia, se aggiungi un argomento come nel mio esempio sopra, anteporrà il percorso assoluto al tuo percorso. Assicurati solo che il tuo URL non contenga una barra iniziale (es: /questo/potrebbe/non/funzionare).

Infine, se per caso hai installato WordPress nella root del tuo server, puoi utilizzare un percorso relativo al server (questo utilizza la barra iniziale per indicare che parte dalla root del server). Quindi se il tuo blog è installato in http://www.me.com/blog allora puoi accedere ai tuoi link relativi in sicurezza con /blog/my_link.php.

13 mag 2011 23:05:30
2
23 feb 2011 02:18:02
Commenti

questo parla solo dei permalink, non di come usare URL relativi invece che assoluti

pdeva pdeva
23 feb 2011 02:53:39

Scorri in basso su quella pagina o meglio ancora http://codex.wordpress.org/Linking_Posts_Pages_and_Categories#Absolute_versus_Relative_Links

Bainternet Bainternet
23 feb 2011 03:07:29
0

In passato utilizzavo shortcode con get_bloginfo per percorsi relativi all'interno del contenuto effettivo dei post. Avevo intenzione di trasformarlo in un plugin completo, ma ero convinto che il team di Automatic ne avesse già rilasciato uno che ora non riesco più a trovare. Ecco un semplice esempio di come funzionava, dato che al momento non trovo il mio codice (non lo uso più), come menzionato nel post di Bainternet... forse anche il team di Automatic si è reso conto di questa necessità.

Una semplice funzione shortcode che restituirà il tuo URL di base:

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

Se il tuo sito è example.com, inserendo lo shortcode [posty] nel tuo contenuto verrà restituito example.com come testo.

Per sfruttare realmente questa funzione, dovrai personalizzarla utilizzando più parametri da get_bloginfo e avvolgerla nei necessari tag HTML http://codex.wordpress.org/Function_Reference/get_bloginfo

25 mar 2011 04:17:29
0

utilizza l'opzione predefinita di collegamento in WordPress, rimuovi il nome del dominio e inizia con /, ad esempio

https://example.com/posts/post10

diventa

/posts/post10

11 nov 2020 22:53:07
0

Questa funzione dovrebbe essere inserita nel file functions.php del tuo tema. Renderà tutti i permalink relativi.

// rendi la radice 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' );

Le immagini nel contenuto dovrebbero utilizzare link assoluti SE tali immagini vengono inviate ai lettori di feed. Se le immagini utilizzano link relativi, i lettori di feed cercheranno di caricarle dai propri domini. C'è anche un leggero impatto sulle prestazioni nell'utilizzo di link relativi per le immagini. Non sembra fare alcuna differenza con i permalink relativi.

Su alcuni server, potrebbe essere necessario aggiungere un base href con la radice del tuo sito per assicurarti che i link funzionino come previsto.

6 mag 2011 08:37:08
0

Credo che esista un plugin Absolute Relative Links che sostituirà tutti i link nelle tue pagine con link relativi. Funziona in modo piuttosto efficace, il che significa che non dovrai tornare a correggere i vecchi link che sono ancora assoluti.

25 ago 2011 18:04:25
1
-2

Questo tutorial ti mostra un metodo base per cambiare il permalink di un articolo in relativo. Ho anche migliorato quel metodo per rendere tutti i link in WordPress relativi. Il codice finale è disponibile qui.

23 feb 2011 03:16:29
Commenti

I link senza contesto non sono utili. Aggiungi almeno una spiegazione.

fuxia fuxia
24 apr 2011 11:44:46