昨日のブログの件、すべて解決した。
まず、公開したものは以下の通り。
昨日から対策が難航していた件について、下に記す。
同じ現象が起きていて解決法を素早く知りたい方は下の「結論」へジャンプ!
起きた不具合
昨日、Contact form7で問い合わせフォームを実装してテスト送信してみたら、送信は完了するものの送信完了と表示される画面でphpのエラーを吐いた。
エラーの内容はこの記事にある内容と全く同じ。
予想される原因
そして当サイトでもCustom permalinksを実装しているので、原因は同じであろう。
Custom permalinksによる干渉と見て間違いない。
考えうる対策
- Custom permalinksを使用しない
- こちらの記事にあったコードを記述
Custom permalinksを外すのはちょっと面倒なことが起きかねないので、避けたい。
コードの記述は、プラグインをアップデートする度に手動で書き換えなければならないので、避けたい。
更に希望
- Site kitは使い続けたい
- Invisible reCaptchaを使い続けたい
埒が明かないので、トライ&エラーを繰り返してみる
まずテストサーバをフルバックアップ。
そして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を設定していて何度も壁にぶち当たり、結果的に「なんだよー」って感じの方法で解決できたことがとても多いように思う。
とりあえず「おまじない」はいつでもどこでも試してみるべき。