【WordPress】カスタムフィールドで必須項目に設定したためにエラーが発生する「自動保存」を停止する方法
ちょっと長いタイトルになってしまいましたが、タイトルを見て「そうそう」と思う方はいると思いますので自身の備忘録も兼ねて紹介します。
WordPressにはカスタムフィールドという機能があり、
- 定型的に入力すべき項目をフォームのようにして入力できる
- カスタムフィールドとテーマのテンプレートを組み合わせれば、フォームに入力するだけの入力環境ができる
- カスタムフィールドの「必須」設定をして、入力漏れを防ぐ
- カスタムフィールド内の語句を対象に検索させることができる
など便利に使えるようになるのですが、1つ問題が発生するときがあります。
それは、タイトルにも書いた
「カスタムフィールドの値を必須項目にした場合、WordPressの基本機能である自動保存と相性が悪いことがある」
ということです。
自動保存は基本的に同じ投稿IDのものを定期的に自動で上書きしてくれるので万が一途中でパソコンが落ちたり、誰かがブラウザを閉じてしまったりしたときにホッとする機能なのですが、
自動保存よりも前に必須入力にしたカスタムフィールドの値を入力しないと不具合が出ることがある
のです。
どういうことかというと、投稿などの新規追加でコンテンツを書いていくと、まずは自動保存を有効にするため?に下書きが作られます。このとき投稿IDの取得と共に動くのがカスタムフィールドの値などのチェック。これで必須項目が空欄だとエラーになり
「少なくとも1つ以上の値が必要です」と赤文字で表示されたり、ひどい場合にはハングアップして待機状態になり、何もクリックできない状況になることもあります。
これを回避するためには、自動保存の機能を停止するのが一番の方法です。カスタムフィールドを使って必須項目を設ける・・・というレベルの方は特に自動保存がなくても自分で下書き保存するでしょうし、席を離れるときには必ず保存していくだろうと思えますからね。というわけでさっそく自動保存を停止する方法を紹介します。
WordPressの投稿などで自動保存を停止する方法
自動保存は前述した通り、同一の投稿IDでどんどん上書きしていく機能。よく聞く「リビジョン」とは意味が違うのです。え?という方へ簡単に説明すると、リビジョンは「元の状態に戻せるように保存していく」機能で、戻せるように今ついている投稿IDとは別のIDで保存されるようになっているのです。従ってたくさんリリースされているリビジョン停止用のプラグインを入れても自動保存は停止されないのです。
話を元に戻して、自動保存を一番簡単に停止するにはテーマのfunctions.phpへ以下のコードを挿入するだけで実装できます。万が一のためにバックアップは取っておくようにしてくださいね。
自動保存を停止するコード
function disable_autosave() {
wp_deregister_script('autosave');
}
add_action( 'wp_print_scripts', 'disable_autosave' );
【注意】コードをコピーして使用する前に必ずお読みください
この記事内にコードが記載されている場合、コードはそのままコピー(いわゆるコピペ)してお使いいただいても構いませんが、以下の件にご留意ください。
使用については自己責任でお願いします
コードの確認は私の管理するサイト、またはテスト環境で問題が起こらなかったものですので、お使いの環境での動作等を保証するものではありません。
万が一このコードを使用してサイトに重篤なトラブルが生じても当サイト、当サイト管理者は一切責任を負いません
コードの変換エラーなどにより動作しない場合、更新エラーが出る場合があります
コードをそのままコピーしても問題なく使えるよう文字列変換を行った上で掲載しておりますが、希に変換できていない場合があり、コードエラーとなることがあります
その場合には以下の方法で修正を行ってみてください
- コードの中に全角の記号が入っていませんか? 半角にすることで解消できます
- コードの中に全角の空白(スペース)がありませんか? 半角にすることで解決できます
- コードは合っているはずなのに更新できないときは 特にエラーの出た行内に日本語での文字列が入っている場合には全角での文字列があるということでエラーになる場合があり、WordPressのエディタチェックではこれを「'」や「)」など閉じ子のエラーとして認識され更新できないことがあります。エラーとして返される行の先頭に空白がある場合には空白をなくすことできちんと認識され更新されるようになることが多いです。
- 「何かが間違っています...」と表示され、更新できないときは このエラーは本当に何がエラーなのかをWordPressのチェックが判断できない場合に発生します。解決策としてはその画面を開き直すことなのですが、その際希に元のコードがすべて削除されてしまう場合がありますので、今表示されているコードを一旦どこかへコピーしてからページの再読み込みをするようにしてやり直します。
※このエラーは不明なエラーなので予期せぬ動きをする可能性がありますので特に慎重な対処が必要です
コードを転載する場合には
ご自身のサイトで当ページで紹介しているコードを転載される場合には当ページへのリンクを入れていただきますようお願いいたします
これだけのコードのためにプラグインをわざわざ探す必要もありませんからそのままコピペして使ってください。
万が一不具合が起きてサイトの表示ができない、管理画面が開けないなどの不具合が出た時は
などを参考に復旧してください。上記のコードだけを追加して不具合が発生した場合にはバックアップがなかったとしても、サーバーからダウンロードして上記と同じコードだけ削除し、上書きアップロードすれば不具合は改善できます。
参考にさせていただいたサイト
以下のサイトを参考にさせていただき、テストサイトで動作確認をした上で紹介していますが、使用に関しては自己責任でお願いします。
WordPressのカスタマイズ・不具合対応などご相談ください
Wordpressのカスタマイズ、不具合解消のご相談はすべてココナラのダイレクトメッセージからお受けしております。まずはこちらのバナーからお気軽にお問い合わせください。
【スポンサーリンク】