2018年07月10日に初出の投稿

Last modified: 2018-07-11

WordPress の Advanced Custom Field を使ったカスタマイズの案件に取り掛かっている。某バス会社さんの「方面別時刻表」のページで、バスの運行先と時刻表の PDF ファイルをセットにして、カスタムフィールドとして登録しているようなのだが、一つのページに7方面あって、それぞれの方面について5つの時刻表を登録するようになっている。つまり、他の項目を度外視しても時刻表のデータだけで70個のフィールドを使っているのだ。このようなフィールドの値は POST 送信するデータ項目なので、ACF という単独のプラグインの動作仕様どころか、そもそも PHP の max_input_vars の値という動作仕様によって規制されており、幾らでも増やせるわけではない。

現状では、恐らく ACF + PHP で扱える項目数の上限に近い数となっていて、ページの編集画面では方面別にタブも使っているため、恐らくこれ以上は項目を増やせないと思われるが、このカスタムフィールドの「グループ」(ブログ記事に相当するデータとして扱われる)が個別に扱えるようなので、ページ内で処理する項目の上限が一つのグループだけを使っているせいで少ないと思った場合は、グループを分割することで個数を増やせるらしい・・・しかし、この話をしたとたんに、個々の方面別に項目数を20に増やしてほしいという要望が出たらしい。何のためにフィールドグループを分割しようとしてるのか、分かってるのかなぁ。

それに、個々のグループへ分割するとページの編集画面が非常に長くなってしまい、とりわけファイルのアップロードというフォームの UI は、データが登録されているのかどうかが非常に分かり辛いので、何か後で問題が起きるような気がする。UI 上で幾らか工夫ができるなら、いらぬ混乱を引き起こさないようにしておきたい。

ちなみに、いま WordPress のテンプレートも更新する必要があるようなので編集しようと開いているのだが・・・なんだこれ? "Habakiri" という既存のテーマを使ってるから、これテーマが更新されたらテンプレートファイルが上書きされてしまうのではないのか(笑)。せめてテーマのディレクトリ名や style.css くらい編集しろよ。

あと、ACF のカスタムフィールド・グループを XML 形式のファイルにエクスポートして、フィールド名だけ直してからインポートし直せば複製できるとか嘘を書いてる連中がいるようだけど、それウソだから。"field_5b442778adcca" のような meta_key が同じままでインポートしたら、meta_key が重複してしまうわけだから、一方の値を変更したら他方も値が変わってしまうのは当たり前だ。meta_key の値を複数のカスタムフィールド・グループで共有・維持するような「本当のただのコピー」ならともかく、複製して別の値を設定したいという人は、こんなことをしては絶対に失敗する。

[2018-07-11] ということで、改修作業は完了した。ただし、公開サーバの WordPress では「方面別時刻表」のページがカスタムの投稿タイプとして登録されていて、そのまま get_field() で ACF の値を取り出そうとしても出てこなかったため、その投稿の ID を付けて get_field( "txt1-1", 12 ); などと第二引数を指定しないといけなかった。なんでテストサイトと公開サイトで仕様が違うんだろうなぁ。駄目な構築の仕方だよなぁ。

  1. もっと新しいノート <<
  2. >> もっと古いノート

冒頭に戻る


※ 以下の SNS 共有ボタンは JavaScript を使っておらず、ボタンを押すまでは SNS サイトと全く通信しません。

Google+ Twitter Facebook