色々公開したよ

昨日のブログの件、すべて解決した。

まず、公開したものは以下の通り。

 

昨日から対策が難航していた件について、下に記す。

同じ現象が起きていて解決法を素早く知りたい方は下の「結論」へジャンプ!

起きた不具合

昨日、Contact form7で問い合わせフォームを実装してテスト送信してみたら、送信は完了するものの送信完了と表示される画面でphpのエラーを吐いた。

エラーの内容はこの記事にある内容と全く同じ。

予想される原因

そして当サイトでもCustom permalinksを実装しているので、原因は同じであろう。

Custom permalinksによる干渉と見て間違いない。

考えうる対策

  1. Custom permalinksを使用しない
  2. こちらの記事にあったコードを記述

Custom permalinksを外すのはちょっと面倒なことが起きかねないので、避けたい。

コードの記述は、プラグインをアップデートする度に手動で書き換えなければならないので、避けたい。

更に希望

埒が明かないので、トライ&エラーを繰り返してみる

まずテストサーバをフルバックアップ。

そしてCustom permalinksを外したら、何がどうまずいのかを見極める。

プラグイン一覧からCustom permalinksを無効化。

フロントエンドの画面で挙動を確認。

固定ページだけで作ったPRELUDEのコンテンツのリンクがことごとくダメ。

これはCustom permalinksでパーマリンクを変更しているからだろう。

Custom permalinksを無効にしたままContact form7を設定して送信してみる。

記事にあった通り、問題なく送信が完了した。

もう一度よく考えてみる

テストサーバではメールフォームが使われることはないから、極端に言えばContact form7を外してしまってもそれ自体は問題はない。

本番サーバで実装していればいい。

でも新たに導入したプラグインとの干渉だとか、そういった検証はできなくなる。

いつもテストサーバで記事等を作成して、WP形式のXMLファイルをエクスポートして、本番サーバへインポートするという作業でコンテンツを作成している。

もしかしたらXMLファイルの時点できちんとパーマリンクが変更されていれば、Custom permalinksが実装されていない本番サーバにインポートした時点で意図した通りのパーマリンクになってないかなと考えてみた。

でもそれこそ2つのサーバの環境が違いすぎてしまって、意図しない挙動をした時に原因がわからなくなる。

はてさて、どうしたものか…。

結論

ここまで長く書いてしまったけど、結論。

先ほどはCustom permalinksを無効にしたままContact form7を設定して送信してうまくいった。

そのままの状態で管理画面の設定→パーマリンク設定→何も変更せずに「変更を保存」ボタンを押すという、WPユーザにはお馴染みの「おまじない」を行う。

次にCustom permalinksを有効化(設定値は無効化する前のものが引き継がれている)。

再び管理画面からパーマリンク設定の「おまじない」。

これで再度送信テストをしたところ、問題は解消。

うまくいったのだ。

最後に

WordPressを設定していて何度も壁にぶち当たり、結果的に「なんだよー」って感じの方法で解決できたことがとても多いように思う。

とりあえず「おまじない」はいつでもどこでも試してみるべき。