概要
WordPressのAdvanced Custom Fields (ACF) プラグインにおける add_sub_row
フィルタは、RepeaterまたはFlexible Contentサブフィールド値に新しいデータ行を追加するために使用されます。このフィルタを利用することで、動的にフィールドの内容を追加したり、条件に応じてデータを操作したりすることが可能になります。
このフィルタは以下のような機能を実装する際によく使われます:
1. ユーザーが入力したデータを元に動的にサブフィールドを生成する。
2. 特定の条件に基づいて異なるデータを追加する。
3. フロントエンドでのカスタマイズ性を高めるために行を追加する。
4. 検索結果に基づいて表示する内容を調整する。
5. データの整合性を保ちながらフィールドを更新する。
6. 管理画面でのユーザーエクスペリエンスを向上させるために行を動的に追加する。
構文
add_filter('acf/add_sub_row', 'your_function_name', 10, 3);
パラメータ
$value
(mixed): 追加される行のデータ。$key
(string): フィールドのキー。$field
(array): フィールドの設定。
戻り値
- (mixed): カスタマイズした行のデータを返します。
使用可能バージョン
- ACF バージョン:5.0+
- WordPress バージョン:4.0+
この関数のアクションでの使用可能性
アクション | 使用例 |
---|---|
mu_plugin_loaded | |
registered_post_type | |
plugins_loaded | |
wp_roles_init | |
setup_theme | |
after_setup_theme | |
set_current_user | |
init | |
register_sidebar | |
wp_loaded | |
send_headers | |
parse_query | |
pre_get_posts | |
wp | |
template_redirect | |
get_header | |
wp_head |
サンプルコード
サンプル1: デフォルトの追加行を変更する
add_filter('acf/add_sub_row', function($value, $key, $field) {
// 新しい行の値を変更
if ($field['key'] === 'field_repeater_key') {
$value['new_field'] = 'Default value';
}
return $value;
}, 10, 3);
このコードは、指定したリピーターフィールドに新しいフィールドを追加し、デフォルト値を設定します。
サンプル2: 条件付きで行を追加
add_filter('acf/add_sub_row', function($value, $key, $field) {
if (some_condition()) {
$value['conditional_field'] = 'Some value';
}
return $value;
}, 10, 3);
ここでは、特定の条件が満たされた場合にのみ新しいフィールドを追加しています。
サンプル3: フロントエンドのデータを反映
add_filter('acf/add_sub_row', function($value, $key, $field) {
if (isset($_POST['user_input'])) {
$value['user_input_field'] = sanitize_text_field($_POST['user_input']);
}
return $value;
}, 10, 3);
このコードは、ユーザーからの入力を受け取り、サブフィールドに値を設定します。
サンプル4: 値のカスタマイズ
add_filter('acf/add_sub_row', function($value, $key, $field) {
$value['custom_field'] = 'Custom Data: ' . current_time('mysql');
return $value;
}, 10, 3);
ここでは、現在の日時を含むカスタムデータをサブフィールドに追加しています。
サンプル5: 複数行の追加
add_filter('acf/add_sub_row', function($value, $key, $field) {
for ($i = 0; $i < 5; $i++) {
$value['row_' . $i] = 'Value ' . $i;
}
return $value;
}, 10, 3);
この例では、5つの新しいフィールド行を追加しています。各行には異なる値が設定されています。