web-dev-qa-db-ja.com

ページ内の絶対リンクではなく相対リンクですか。

私のブログはblog.mydomain.comの下にあります。他のサブドメインからアクセスする必要がある静的コンテンツ用のページを使用しています。そのため、careers.mydomain.comblog.mydomain.com/careersのWordPressコンテンツを表示します。

私の問題は、ページ上のすべてのリンクがまだblog.mydomain.comを参照していることです。 WordPressに相対リンクの使用を依頼する方法はありますか?それともページのbaseURLを変更する方法?

1
mrtsherman

パーマリンクがpost_linkget_permalinkから返される前に通過するフィルターwp-includes/link-template.phpがあります。そのフィルタを使ってリンクを変更することができます。

ただし、すべてのパーマリンクを相対的なものにすると、特定の状況で意図しない結果が生じる可能性があることに注意してください。 is_feed() == trueのときは、相対リンクは必要ないかもしれません。

post_linkフィルタが、変更が必要なすべてのURLを捕捉できないことがあります。その場合は、もっと効果の広いhome_urlフィルタを試すことができます。

もう1つの可能性(私のお気に入り)は、リンクを相対化するために出力バッファリングを使用することです。 (下の例)

安全のために、必要なときにだけリンクを変更できます。実際のブログから静的サブドメインにコンテンツを取得する方法はわかりませんが、HTTPリクエストを使用している場合は、クエリarg:?rlzを追加して、テーマ/プラグインでそれを探すことができます。

if ( isset($_GET['rlz']) ) {
    function my_ob_handler($HTML) {
        return str_replace( home_url('/'), '/', $HTML );
    }
    ob_start( 'my_ob_handler' );
}
2
Andy