概要
get_row_index
関数は、Advanced Custom Fields (ACF) プラグインで提供されている関数で、have_rows
ループ内の現在の行インデックスを返します。この関数は、カスタムフィールドが行の繰り返しフィールドで定義されている場合に特に役立ちます。通常、データの順序や配列のインデックスを取得したり、特定の条件に基づいて出力を制御したりする際に使用されます。
get_row_index
関数の使用は、以下のような機能を実装する際に一般的です。
1. 繰り返しフィールド内でのインデックスに基づくスタイルの切り替え
2. インデックスに基づく特定のデータの出力制御
3. データの順序に関する条件分岐
4. リストの偶数/奇数行のマークアップ調整
5. 特定のインデックスに関連したデータの集計
6. カスタムフィールドのインデックスを利用したSNSシェアボタンの表示処理
構文
get_row_index();
パラメータ
この関数にはパラメータはありません。
戻り値
現在の行のインデックス(1から始まる整数値)を返します。
使用可能なバージョン
この関数は、ACF プラグインのバージョン 5 以降および WordPress バージョン 4.0 以降で使用可能です。
サンプルコード
サンプルコード1: 偶数行のスタイルを適用する
このコードは、繰り返しフィールドの偶数行に異なるスタイルを適用します。
if( have_rows('repeater_field') ):
while( have_rows('repeater_field') ): the_row();
$index = get_row_index();
$class = ($index % 2 == 0) ? 'even' : 'odd';
echo '<div class="' . $class . '">内容: ' . get_sub_field('sub_field') . '</div>';
endwhile;
endif;
引用元: https://www.advancedcustomfields.com/
サンプルコード2: 特定のインデックスに基づくデータの出力
このコードでは、3行目の特定のフィールドの値を出力します。
if( have_rows('repeater_field') ):
while( have_rows('repeater_field') ): the_row();
if (get_row_index() == 3) {
echo '3行目のフィールド: ' . get_sub_field('sub_field');
}
endwhile;
endif;
引用元: https://www.advancedcustomfields.com/
サンプルコード3: データの集計
このコードは、繰り返しフィールドの各行における数値を集計します。
$total = 0;
if( have_rows('repeater_field') ):
while( have_rows('repeater_field') ): the_row();
$total += get_sub_field('number_field');
endwhile;
endif;
echo '合計: ' . $total;
引用元: https://www.advancedcustomfields.com/
サンプルコード4: インデックスに基づく条件分岐
このコードでは先頭行の特定のフィールドの値を出力します。
if( have_rows('repeater_field') ):
while( have_rows('repeater_field') ): the_row();
if (get_row_index() == 1) {
echo '先頭行のフィールド: ' . get_sub_field('sub_field');
}
endwhile;
endif;
引用元: https://www.advancedcustomfields.com/
サンプルコード5: リストのマークアップ調整
この場合、行をリストアイテムとして表示し、各行にインデックスを表示します。
if( have_rows('repeater_field') ):
echo '<ul>';
while( have_rows('repeater_field') ): the_row();
echo '<li>行インデックス: ' . get_row_index() . ' - ' . get_sub_field('sub_field') . '</li>';
endwhile;
echo '</ul>';
endif;
引用元: https://www.advancedcustomfields.com/
この関数のアクションでの使用可能性
アクション | 使用可能 |
---|---|
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 |