web-dev-qa-db-ja.com

自分のページで相対リンクを使用する方法

私のWebページでは、絶対リンクではなく相対リンクを使用したいです。

しかし、ページはそれらの内部のPHPコードを許可していないので、私は相対的な方法でURLからすることはできません。

ドメイン名を変更してもリンクに影響が及ばないように、ワードプレスページ内に相対URLをどのように入力するのですか。

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

site_url() 単独で使用すると、ブログへの絶対パスが返されます。しかし、上の例のように引数を追加すると、絶対パスが先頭に追加されます。 URLにスラッシュが含まれていないことを確認してください(例:/ this/may/not/work)。

最後に、あなたのワードプレスがあなたのサーバーのルートにインストールされているのなら、あなたはサーバー相対パスを使うことができます(これはサーバールートで始まることを示すために先行スラッシュを使います)。あなたのブログがhttp://www.me.com/blogにインストールされているのであれば、あなたは/blog/my_link.phpで安全にあなたの相対リンクにアクセスすることができます。

5
Tom Auger

WordPressには、wp_make_link_relativeにある絶対URL /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' );

デラックスブログのヒント フィードとサイトマップのリンクが影響を受けないようにしながら、さまざまな種類のリンクにこれを適用する方法を示します。

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

実際の投稿コンテンツ内の相対パスには、get_bloginfoでショートコードを使用していました。私はそれを本格的なプラグインに変えるつもりでしたが、私はもう手に入れることができない自動解放されたもので人々を誓うことができました。これは私がもう使っていないので私のatmを見つけることができないときにどのように働くかの簡単な例です、Bainternetの投稿によると、自動の人々もこれを理解しました..

あなたのベースURLを返すシンプルなショートコード関数:

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

あなたのサイトがexample.comであるならば、あなたのコンテンツにショートコード[posty]を入れることはテキストとしてexample.comを返すでしょう。

これを実際に使用するには、get_blogfinoからより多くのパラメータを使用して関数をカスタマイズし、必要なHTMLタグでラップする必要があります http://codex.wordpress.org/Function_Reference/get_bloginfo

1
Wyck

Absolute Relative Linksプラグインがあると思います それはあなたのページのすべてのリンクを相対リンクに置き換えるでしょう。それはあなたが戻って、まだ絶対である古いリンクを修正する必要がないことを意味して非常に美しく働きます。

0
icc97

この関数はあなたのテーマの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' );

コンテンツ内の画像は絶対リンクを使用する必要がありますIFこれらの画像はフィードリーダーに送信されます。画像が相対リンクを使用している場合、フィードリーダーは自分のドメインから画像を読み込もうとします。画像への相対リンクを使用した場合も、パフォーマンスがわずかに低下します。相対パーマリンクと何の違いもないようです。

一部のサーバーでは、リンクが期待どおりに機能するようにするために、サイトルートにベースhrefを追加する必要があります。

0
Elpie