ゆろぐ

ゆるく、ろぐる。独学フロントエンドエンジニアの技術ブログ

【ACF】カスタムフィールド名の決め方に注意をしましょう

WordPressでWEBサイト制作を行なっていると、お客様が簡単に更新できるようにカスタムフィールドを使ってテンプレートのようなものを作成することがあります。

最近ではブロックエディタがだいぶ使いやすくなってきたので、僕個人で制作を受けた場合にはカスタムフィールドは極力使わずに、ブロックエディタのみで構築できるように設計しています。

が、まだまだブロックエディタを毛嫌いされる方が多く、特に昔からWordpressを利用されているお客様だと慣れるのが大変という理由からどうしてもカスタムフィールドに全頼りになる事例が多くなります。

【本題】フィールド名はユニークなものになるように

リニューアルを他社から引き継いだ場合や、元々お客様ができるところまで自分でカスタマイズしていた。なんていう時に起きやすいのですが、カスタムフィールドのフィールド名が既存で設定されているものにしてしまうと予期せぬトラブルの原因になります。

今回、この記事を書くきっかけになったのは、Advanced Custom Fieldsを使って構築している時に値が保存できない事象に遭遇したからです。

僕の場合は、自分でテーマ側に設定していたフィールドをプラグインに移設する際に、テスト段階でテーマ側のものを残して運用してみた結果上記のようなエラーが出たので、ある意味想定内の出来事でした。

が、途中から開発を引き継ぐ場合やリニューアルの際には思いがけずフィールド名が重複してしまうことがあります。

重複に気づきにくいパターン

何か不具合を感じた時、重複しているかどうかを確認しても最初は見つけられない時があります。僕も最初の頃ハマったのが下記の2つ。

  1. 別のプラグインですでに設定されている(特にCustom Field Suiteがわかりにくい)
  2. テーマ側で設定している

テーマ側で自分でフィールドを設定できる人であれば、テーマファイルの中を見ればわかりますが、基本プラグインで構築している方にとっては2のパターンでも重複を探すのが難しいのかもしれません。(テーマファイル自体に検索をかければ重複しているかどうかは確認できるかも・・・)

1のパターンではカスタムフィールドを追加するプラグインが複数導入されている環境で起きます。

個人的に現場でよくみるのが「Advanced Custom Fields」「Custom Field Suite」「Smart Custom Fields」の3つです。

基本的にできることは同じですが、ループが使えるかどうか(無料・有料)や、フィールドを表示するための条件分岐の方法が異なるので、環境によっては複数のプラグインを同時に使っていることがあります。

※同じ機能を持つプラグインを重複させるのは推奨できませんが・・・。

Advanced Custom FieldsとSmart Custom Fieldsは管理画面のメニューに名前が表示されるので、導入されているかどうかがわかりやすく、確認がしやすいのですがCustom Field Suiteの場合は「設定」メニューの中に隠れているで使ったことがない人の場合は気付きません。

もし重複がありそうだと感じたら「設定」の部分も見てみるようにしましょう。

重複していると具体的にどういったエラーが出るのか

フィールド名が重複した状態で、同じ投稿画面で使用されている場合、基本的には後に読み込まれる内容しか反映されないような状態になります。

そのため、データを入力して保存しても、入力内容が反映されないという自体になるので、いくら入力してもデータが空のままになったり、元々表示されているデータを書き換えることができない。というような状態になります。

重複を避けるためにはどうしたらいいのか

理想としては使用しているフィールド名がどんなものがあるのかを調べる(プラグインの設定内容を見たりデータベースを確認するなど)のが理想だと思いますが、実際はそこまで時間をかけれる案件は多くありません。

特にフリーランスで仕事をしていると、納期の迫った案件ばかりが回ってきたり、日々の仕事量にばらつきがあると思います。

フィールド名の命名規則に特に縛りがない場合、僕の場合はlcw_というような感じで自分の屋号がわかるような接頭辞をつけるようにしています。(僕の事業の屋号がWEB総務課LC-Worldなので)

もし二次受けの案件の場合は一次受けの会社名で接頭辞をつけるようにします。

これをするだけで、基本的にフィールド名が被ることはなく、被ったとしたら主に自分の責任(自分で重複して設定している)なので原因を見つけやすくなります。

また、時間が経って再度自分が作業をする時にも自分が入れたフィールドだとわかるのも利点があります。

屋号系の接頭辞が使えない場合

同時に複数人で作業しているような環境であったり、二次受けの案件だと屋号の接頭辞が使いにく場面もあるので、そういった場合は追加する投稿名を窃盗次にするようにしています。

たとえば通常の「投稿」に追加するフィールドであれば「post_」、固定ページであれば「page_」というよな感じです。

カスタム投稿だけではなくカスタムタクソノミーにも同じようなルールで設定できるので、もし迷った際は試してみてください。

まとめ

WordPressを使い始めた頃は右も左も分からず、データベースの接頭辞をみて、これなんか意味あるの?とか思っていましたが、色々な案件に携わる中で接頭辞の大切さが身にしみてわかりました。

データベースに限らずCSSの命名規則でも接頭辞は大切になってきます。

最初の頃は特に細かいルールを気にしている余裕もなく、動くかどうか。が重要ではありますが、後から自分で保守管理をしやすくするためにも、プログラムを書く以上にルールを作っておくほうが大切なのかもしれないな・・・。と感じる今日この頃でした。

【ACF】カスタムフィールド名の決め方に注意をしましょう

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

トップへ戻る