今日設定したお客様のサイト修正で、おもしろいケースがあったので、ご紹介します。

URL設定を変更するケース


WordPressの「設定」→「一般設定」の中にアドレスを設定する欄があります。

WordPressアドレスとサイトアドレス

普通、この2つは同じアドレスなのですが、たまに違うアドレスに設定することがあるんですよ。

たとえば、WordPressをインストールする時にサーバーの「かんたんインストール」などを使うと、アドレスが自動的に「https://wp-firststep.com/wp」になるサーバーがあります。

そのままにしておいても別に問題ないんですが、URLがすっきりしないのでちょっとかっこ悪いですよね。

そんな時は「サイトアドレス」の方だけを希望のものに修正して、「WordPressアドレス」はそのままにするという設定方法があります。


実際にデータが入っているフォルダは「https://wp-firststep.com/wp」のままだけど、表示だけ「https://wp-firststep.com」にするわけなんですね。

でも、この記事でお話しするのは、その設定方法の説明ではなくその後の話です。

このように「WordPressアドレス」と「サイトアドレス」を異なるものに設定しておくと、投稿を編集して「プレビュー」すると・・・「ページが見つかりません」というエラーになってしまうことがあります。

理由は、プレビューの時だけはもとの「WordPressアドレス」を使って表示させようとする仕様のようで、プレビューページのアドレスが「存在しないアドレス」になってしまうみたいです。

それは困りますね。

.htaccessに転送設定する方法は効かなかった

そんな時は、.htaccessというファイルに転送設定を記述するという方法があります。

こちらのchocoring blogさんの記事がとてもわかりやすかったです^^
http://chocoring.hatenablog.jp/entry/2014/12/27/115414

ですが、こちらの方法だと
「https://wp-firststep.com」
  ↓ ↓ ↓
「https://wp-firststep.com/wp
のように、基本的には同じドメインで、一つ下の階層のフォルダに入っている時にしか使えません。

今回のお客様のケースでは
表示したいアドレスは「https://1234567.com」なんだけど、データが入っているフォルダは「https://hogehoge.com/wp」になっている、というような

もうね、なんていうかね、「どうしてそうなったよ?」というような状況でして(笑)仕方なく違う方法を探しました。

function.phpでプレビュー時のURLを変更する

参考にさせていただいたのはこちらです。
https://blog.s-giken.net/286.html

function replace_preview_post_link ( $url ) {
  $replace_url = str_replace('http://www.example.com', 'http://admin.example.com', $url);
  return $replace_url;
}
add_filter('preview_post_link', 'replace_preview_post_link');

上記コードのURLを、お使いの環境で設定されているアドレスに書き換えて使います。

http://www.example.com ・・・WordPressアドレス

http://admin.example.com・・・サイトアドレス

で、私の場合は

function replace_preview_post_link ( $url ) {
  $replace_url = str_replace('https://1234567.com', 'https://hogehoge.com', $url);
  return $replace_url;
}
add_filter('preview_post_link', 'replace_preview_post_link');

と、記載したらうまく行きました^^

今日のポイント

ついhttps://hogehoge.com/wpと書いてしまって、なかなかうまくいかなかったのですが、アドレス部分だけ置換するようなので、wp(サブディレクトリフォルダ名)はいらなかったみたいです。

同じご状況の方の参考になれば幸いです^^

※この設定は、クラシックエディター使用時のプレビューのURLを変更設定になります。ブロックエディターの場合うまくいかないかも・・