Web開発

WordPressで「ACF: Table Field」プラグインを使用してテーブルに初期値を設定する方法

ACF(Advanced Custom Fields) は、WordPressにカスタムフィールドを追加して柔軟にデータを管理できる非常に人気のあるプラグインです。特に「ACF: Table Field」プラグインを使用すると、簡単にテーブル形式のカスタムフィールドを追加できますが、テーブルフィールドに初期値を設定したい場合には少し工夫が必要です。

この記事では、「ACF: Table Field」プラグインを使用してテーブルフィールドに初期値を設定する方法について、具体的な手順をご紹介します。

1. ACF: Table Fieldプラグインとは

「ACF: Table Field」プラグインは、ACF Proと連携し、ユーザーが管理画面から簡単にテーブル形式のデータを入力できるようにする拡張機能です。このプラグインを使用すれば、商品リストやスタッフ情報など、様々な情報を表形式で入力・管理できます。

2. テーブルフィールドに初期値を設定する方法

通常、ACFプラグインのフィールドに初期値を設定するためには、acf/load_value フィルターを使用します。これにより、まだデータが入力されていないフィールドに対して初期値を動的に適用することができます。

ただし、ACF: Table Field プラグインでは、テーブルフィールドの構造に応じて初期値の設定が必要です。

3. テーブルフィールドでの初期値設定のコード例

以下は、functions.php ファイルに追加するコードの例です。この例では、テーブルフィールドに「住所」「電話番号」「営業時間」「定休日」を設定し、右側のカラムは空欄にしておきます。

function my_acf_load_shop_table_default_value( $value, $post_id, $field ) {
    // フィールドがまだ設定されていない(空)場合に初期値を設定
    if( empty($value) ) {
        $value = array(
            array( '住所', '' ),       // 1行目: 住所
            array( '電話番号', '' ),   // 2行目: 電話番号
            array( '営業時間', '' ),   // 3行目: 営業時間
            array( '定休日', '' )      // 4行目: 定休日
        );
    }
    return $value;
}

add_filter('acf/load_value/name=shop_table', 'my_acf_load_shop_table_default_value', 10, 3);

このコードのポイント:

  • acf/load_value フィルターを使って、テーブルフィールドに初期値を設定します。
  • テーブルの行ごとに「住所」「電話番号」「営業時間」「定休日」を設定し、右側のカラムは空欄にしています。
  • このフィルターは、まだデータが入力されていないフィールドにのみ適用されます。

4. 初期値が反映されない場合の対処法

もし、このコードを追加しても初期値が表示されない場合、以下の点を確認してください。

  1. フィールド名が正しいか確認: フィルターで使用している shop_table が、実際に作成したフィールド名と一致しているか確認しましょう。フィールド名が異なると初期値が設定されません。
  2. キャッシュをクリア: サイトにキャッシュプラグインがインストールされている場合、キャッシュが影響して初期値が反映されないことがあります。キャッシュをクリアして再度確認してください。
  3. 他のフィルターやプラグインとの競合: 他のプラグインやフィルターが影響を与えている可能性があります。特に、他の acf/load_value フィルターが同じフィールドに適用されていると競合することがあります。

まとめ

「ACF: Table Field」プラグインでテーブルフィールドに初期値を設定するためには、acf/load_value フィルターを使って初期値を定義する必要があります。今回紹介したコードを参考に、自分のプロジェクトに合わせた初期値を設定してみてください。

テーブルフィールドは、リスト形式でデータを入力する際に非常に便利な機能です。初期値を設定しておくことで、管理画面での入力作業も効率化されるでしょう。