如何在我的页面上使用相对链接?

时间:2011-02-22 作者:pdeva

在我的网页中,我想使用相对链接而不是绝对链接。

然而,页面中不允许php代码,所以我无法以相对的方式从url进行访问。

如何在wordpress页面中获取相对URL,以便更改域名不会影响链接?

8 个回复
最合适的回答,由SO网友:Tom Auger 整理而成

$my_url = \'my/relative/url.php\';
echo site_url($my_url);
site_url() 当自己使用时,将返回博客的绝对路径。但是,如果您向其添加一个参数,如我上面的示例所示,它将在您的路径的绝对路径之前添加。只需确保您的URL不包含前导斜杠(例如:/this/may/not/work)。

最后,如果您碰巧在服务器根目录中安装了wordpress,您可以使用服务器相对路径(这使用前导斜杠表示从服务器根目录开始)。因此,如果您的博客安装在http://www.me.com/blog 然后,您可以使用/blog/my_link.php.

SO网友:Daze

WordPress具有从绝对URL中删除协议和域的内置功能,wp_make_link_relative, 位于/wp-includes/formatting.php:

function wp_make_link_relative( $link ) {
    return preg_replace( \'|https?://[^/]+(/.*)|i\', \'$1\', $link );
}
要将此功能应用于(例如)永久链接,只需添加一个过滤器,如下所示:

add_filter( \'the_permalink\', \'wp_make_link_relative\' );
Deluxe Blog Tips 演示如何将其应用于各种类型的链接,同时确保提要和站点地图链接不受影响:

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\' );
    }
}

SO网友:Bainternet
SO网友:Wyck

我曾经使用get\\u bloginfo的短代码来表示实际帖子内容中的相对路径。我本来打算把它变成一个全面的插件,但我可以向自动发布插件的人发誓,我再也找不到了。这是一个简单的例子,它是如何工作的,因为我找不到我的自动取款机,因为我不再使用它了,根据Bainternet的帖子,也许自动取款机的人也意识到了这一点。。

返回基本url的简单快捷码函数:

function my_relative_post_image_link() {
$linky = get_bloginfo(\'wpurl\');
echo $linky;
}
add_shortcode(\'posty\', \'my_relative_post_image_link\');
如果您的站点是示例。com然后在内容中添加短代码[posty]将返回示例。com作为文本。

要实际使用它,您需要使用get\\u blogfino中的更多参数来定制该函数,并将其包装在必要的html标记中http://codex.wordpress.org/Function_Reference/get_bloginfo

SO网友:Ali80

使用wordpress中的默认链接选项,删除域名并以/, 例如

https://example.com/posts/post10

成为

/posts/post10

SO网友:Elpie

这个功能应该放在你的主题中functions.php. 这将使所有永久链接都是相对的。

// 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\' );
内容中的图像应该使用绝对链接,如果这些图像输出给读者。如果图像使用相对链接,提要阅读器将尝试从自己的域加载图像。使用图像的相对链接也会对性能造成小的影响。它似乎与相对永久线没有任何区别。

在某些服务器上,您可能需要在站点根目录中添加base href,以确保链接按预期工作。

SO网友:icc97

我认为Absolute Relative Links plugin 这将用相对链接替换页面中的所有链接。它工作得非常漂亮,这意味着你不必回去修复任何仍然是绝对的旧链接。

SO网友:Anh Tran

This tutorial 显示将post permalink更改为relative的基本方法。我还改进了该方法all links 在WordPress relative中。最终代码为here.

结束

相关推荐

Stop underlining image links

在我的小部件栏上,我有一个超链接的图像。问题是CSS强调了这一点。如何删除下划线?更新:刚刚注意到这是导致下划线的原因:} .entry a, .secondaryColumn a, #commentsContainer h3 a, .commentlist .comment-author a { border-bottom: 1px solid #ddd; color: #3c6c92; font-weight: bold;