ショートコードに置き換えます。
やってることは Simple Colors さんと同じです。あ、でもパクリちゃいますよ。WordPress なんつー超メジャーなパブリッシングプラットホームじゃぁ大抵のことは既に誰かがやっています。検索したら類似記事があったけど、せっかくなので記事書こう、みたいな Web あるあるです。記事を書くからには人として知ってて丸無視はできませんので、先達に敬意を表することがオープンソースに生きる我ら Web クリエイターとしての礼儀ってもんです。
知り合いのマイナー(失礼な)ブログでなるほど記事を読んだしばらく後に、メジャーなブログで同じような記事を見かけたら残念な気持ちになりますよね。それが続くと なんやろこれ ってなりますよね。え、ならない?なりませんか!わぉ。
コード
テーマフォルダの functions.php に以下のコードを貼り付ければ OK です。
// [my_home_url] ショートコードを定義します。
add_shortcode( 'my_home_url', 'my_home_url' );
function my_home_url( $atts ) {
return home_url();
}
// 投稿保存時に、本文内のドメイン付き絶対URL部分を [my_home_url] に置換します。
add_filter( 'wp_insert_post_data', 'my_insert_post_data', 10, 2 );
function my_insert_post_data( $data, $postarr ) {
$data['post_content'] = preg_replace(
'/'.preg_quote( home_url(), '/' ).'/',
'[my_home_url]',
$data['post_content']
);
return $data;
}
// 管理画面での投稿編集時に [my_home_url] をドメイン付き絶対URL に戻します。
add_filter( 'the_editor_content' , 'my_the_editor_content' );
function my_the_editor_content( $content ) {
return preg_replace(
'/'.preg_quote( '[my_home_url]' ).'/',
home_url(),
$content
);
}
仕組み
- 投稿の保存時に、本文内で 管理画面の[設定|一般]の[サイトアドレス (URL)]に相当する部分 をショートコード [my_home_url] に置換します。
- ショートコードなので、本文の取得&表示時に 'the_content' フィルタを
apply_filters()
されると [my_home_url] がサイトアドレスに置換されます。 - 投稿編集時は 'the_editor_content' フィルタで同上です。
これで画像のパスも別投稿へのリンクも、投稿本文中にあるドメイン付き絶対URL はひととおりヨキに計らってくれます。WordPress をインストールしたディレクトリとは別のディレクトリにサイトのホームページを設定したりしなかったりしても大丈夫です。また、クライアントがショートコードを目にすることもないので、何かと安心です。
ところでセキュアな URI スキームの場合はどうするんだい?と上司がイジワル言ってくるかもしれないので、その辺りは ジムさんのブログ を参考にご自身でチャレンジしてみてください。
追記
この方法はコンテンツを仕込む前に施しておく必要があります。既に記事を書きまくってしまった方は、ヲカモトさんのWordPress でドメイン移行したとき全URLを手っ取り早く変えるを参考にチェンジにチャレンジしてみてください。
動作確認バージョン
- WordPress 3.3.1
【ブログ書いた】環境移行・ドメイン変更に耐えるサイト作り http://t.co/vdEgmBRG
なんだよ、このページのツイートボタンからツイートできないじゃないか(プンプン RT @kzxtreme 【ブログ書いた】環境移行・ドメイン変更に耐えるサイト作り http://t.co/tV0liRTb
WordPress 投稿本文のドメイン付き絶対URL問題を解決してスムーズな環境移行を実現する方法
テスト環境から本番環境移行がスムーズにできる。
WPがURL挿入時にドメイン付けちゃうからですね。 http://t.co/pYNPYjXq
【お昼の再掲】環境移行・ドメイン変更に耐えるサイト作り http://t.co/vdEgmBRG #wordpressjp @wordpress_fan
“WordPress 投稿本文のドメイン付き絶対URL問題を解決してスムーズな環境移行を実現する方法 | wpxtreme” http://t.co/JQNZJJM0
@takerui: “WordPress 投稿本文のドメイン付き絶対URL問題を解決してスムーズな環境移行を実現する方法 | wpxtreme” http://t.co/JQNZJJM0
WordPress 投稿本文のドメイン付き絶対URL問題を解決してスムーズな環境移行を実現する方法 | wpxtreme ショートコードに置き換えます。 やってることは Simple Colors さんと同じです。あ、でもパ… http://t.co/LK04VvrB
【お昼の再掲】環境移行・ドメイン変更に耐えるサイト作り http://t.co/vdEgmBRG #wordpressjp @wordpress_fan
WordPress 投稿本文のドメイン付き絶対URL問題を解決してスムーズな環境移行を実現する方法
http://t.co/cxra0J1F
なるほど。: WordPress 投稿本文のドメイン付き絶対URL問題を解決してスムーズな環境移行を実現する方法 http://t.co/hSL0wGfJ @kzxtremeさんから
WordPress 投稿本文のドメイン付き絶対URL問題を解決してスムーズな環境移行を実現する方法 http://t.co/lwHvLcah @kzxtremeさんから
環境移行はgerp痴漢でいいやと思ってたけど、過去何度も痴漢未遂した僕には必要な護身術かもしれない。→WordPress 投稿本文のドメイン付き絶対URL問題を解決してスムーズな環境移行を実現する方法 http://t.co/AtZIAtkv
「WordPress 10大なんでやねん」をぜひ伺いたいっす。 WordPress 投稿本文のドメイン付き絶対URL問題を解決してスムーズな環境移行を実現する方法 | wpxtreme http://t.co/eIu48N0a
ショートコードの使い方が超オシャレです|WordPress 投稿本文のドメイン付き絶対URL問題を解決してスムーズな環境移行を実現する方法 http://t.co/m2Dwilk9 via @kzxtreme
ショートコードの使い方が超オシャレです|WordPress 投稿本文のドメイン付き絶対URL問題を解決してスムーズな環境移行を実現する方法 http://t.co/m2Dwilk9 via @kzxtreme
これ超すてきやわ。 WordPress 投稿本文のドメイン付き絶対URL問題を解決してスムーズな環境移行を実現する方法 http://t.co/qj0MqRxq @kzxtremeさんから
ショートコードの使い方が超オシャレです|WordPress 投稿本文のドメイン付き絶対URL問題を解決してスムーズな環境移行を実現する方法 http://t.co/m2Dwilk9 via @kzxtreme
ショートコードの使い方が超オシャレです|WordPress 投稿本文のドメイン付き絶対URL問題を解決してスムーズな環境移行を実現する方法 http://t.co/m2Dwilk9 via @kzxtreme
WordPress 投稿本文のドメイン付き絶対URL問題を解決してスムーズな環境移行を実現する方法 | wpxtreme http://t.co/jxgpZnDd
“WordPress 投稿本文のドメイン付き絶対URL問題を解決してスムーズな環境移行を実現する方法 | wpxtreme” http://t.co/nfwVOaSg