wake-up-neo.com

Wie verwende ich relative Links auf meinen Seiten?

Auf meinen Webseiten möchte ich relative Links anstelle von absoluten Links verwenden.

Allerdings erlauben Seiten keinen PHP-Code in ihnen, so kann ich nicht von einer URL in einer relativen Weise tun.

Wie erhält man relative URLs in WordPress-Seiten, so dass sich das Ändern von Domain-Namen nicht auf die Links auswirkt?

4
pdeva
$my_url = 'my/relative/url.php';
echo site_url($my_url);

site_url () gibt bei alleiniger Verwendung den absoluten Pfad zu Ihrem Blog zurück. Wenn Sie jedoch ein Argument wie in meinem obigen Beispiel hinzufügen, wird der absolute Pfad vor Ihrem Pfad eingefügt. Stellen Sie einfach sicher, dass Ihre URL keinen führenden Schrägstrich enthält (zB:/this/may/not/work).

Wenn Sie Ihr WordPress-Programm zufällig im Stammverzeichnis Ihres Servers installiert haben, können Sie einen serverbezogenen Pfad verwenden (dabei wird der Schrägstrich verwendet, um den Beginn am Stammverzeichnis des Servers anzugeben). Wenn Ihr Blog also unter http://www.me.com/blog installiert ist, können Sie mit /blog/my_link.php sicher auf Ihre relativen Links zugreifen.

5
Tom Auger

WordPress verfügt über eine integrierte Funktion zum Entfernen von Protokoll und Domäne aus absoluten URLs, wp_make_link_relative, die sich in /wp-includes/formatting.php befinden:

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

Um diese Funktion auf (z. B.) Permalinks anzuwenden, fügen Sie einfach einen Filter als solchen hinzu:

add_filter( 'the_permalink', 'wp_make_link_relative' );

Deluxe Blog Tips zeigt, wie dies auf verschiedene Arten von Links angewendet wird, wobei sichergestellt wird, dass Feed- und Sitemap-Links nicht betroffen sind:

add_action( 'template_redirect', 'rw_relative_urls' );
function rw_relative_urls() {
    // Don't do anything if:
    // - In feed
    // - In sitemap by WordPress SEO plugin
    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
Daze
2
Bainternet

Früher habe ich Shortcode mit get_bloginfo für relative Pfade innerhalb des tatsächlichen Beitragsinhalts verwendet. Ich wollte es in ein vollwertiges Plugin verwandeln, aber ich hätte den Leuten beschwören können, dass es automatisch freigegeben wird, was ich nicht mehr finde. Hier ist ein einfaches Beispiel, wie es funktioniert, da ich meinen Geldautomaten nicht mehr finden kann, da ich ihn nicht mehr benutze.

Eine einfache Shortcode-Funktion, die Ihre Basis-URL zurückgibt:

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

Handelt es sich bei Ihrer Website um example.com, wird durch Einfügen des Shortcodes [posty] in Ihren Inhalt example.com als Text zurückgegeben.

Um dies tatsächlich nutzen zu können, müssen Sie die Funktion mithilfe weiterer Parameter aus get_blogfino anpassen und in die erforderlichen HTML-Tags http://codex.wordpress.org/Function_Reference/get_bloginfo einbinden.

1
Wyck

Ich denke, dass es ein Absolute Relative Links-Plugin gibt das alle Links auf Ihren Seiten durch relative Links ersetzt. Es funktioniert sehr gut, was bedeutet, dass Sie nicht zurückgehen müssen, um alte Links zu reparieren, die noch absolut sind.

0
icc97

Diese Funktion sollte in den functions.php Ihres Themas eingefügt werden. Dadurch werden alle Permalinks relativiert.

// make root relative
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' );

Bilder in Inhalten sollten absolute Links verwenden, WENNdiese Bilder gehen, um Leser zu füttern. Wenn Bilder relative Links verwenden, versuchen die Feed-Reader, die Bilder aus ihren eigenen Domänen zu laden. Die Verwendung von relativen Links zu Bildern hat einen kleinen Performance-Nachteil. Es scheint keinen Unterschied zu den relativen Permalinks zu machen.

Auf einigen Servern müssen Sie möglicherweise base href mit Ihrem Site-Stammverzeichnis hinzufügen, um sicherzustellen, dass die Links wie erwartet funktionieren.

0
Elpie