今日設定したお客様のサイト修正で、おもしろいケースがあったので、ご紹介します。
URL設定を変更するケース
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を変更設定になります。ブロックエディターの場合うまくいかないかも・・