私は、チェックボックスのフィールドに重力のフォームを入力する次のコードを持っています。私はfield_ids
の配列を持っています。私はforeachループでループしています。 $arr = array(5, 6, 7, 8, 9);
私は、データベースからデータを取得しているクエリで2番目のforeachループを持っています。以前の配列の値が新しいループで持ち越されるのはなぜですか?
しかし、コードは動作していますが、その後はそれぞれfield_id
がそのfield_idとそれ以前の結果を表示しています。例えばfield_id=6
は、field_id=5
とfield_id=6
のチェックボックスフィールドのリストを示しています。 field_id= 7
はfield_id=5
、field_id=6
とfield_id=7
のチェックボックスフィールドのリストを示しているなど
function populate_checkboxes($form){
foreach($form['fields'] as &$field) {
$arr = array(5, 6, 7, 8, 9);
foreach($arr as $field_id){
global $wpdb;
$query = $wpdb->get_results("SELECT sefer FROM bulk_import where field_id_select_items = {$field_id}");
foreach($query as $sefer){
if ($field->id != $field_id) {continue;}
$choices[] = array('text' => 'Select All', 'value' => 'Select_all');
$inputs[] = array('label' => 'Select All', 'id' => '1');
//get all $sefer values
$posts = get_posts(array(
'post_type'=> array('learning_item'), 'suppress_filters' => 0, 'posts_per_page' => -1, 'order' => 'asc',
'meta_query' => array(
array('key' => 'taken', 'value' => '0'),
array('key' => 'torah', 'value' => $sefer -> sefer)
),
));
$input_id = 2;
foreach($posts as $post) {
//skipping index that are multiples of 10 (multiples of 10 create problems as the input IDs)
if ($input_id % 10 == 0) {$input_id++;}
$choices[] = array('text' => $post->post_title, 'value' => $post->post_title);
$inputs[] = array('label' => $post->post_title, 'id' => "{$field_id}.{$input_id}");
$input_id++;
}
$field->choices = $choices;
$field->inputs = $inputs;
}
//reset query here?
wp_reset_query();
}
}
return $form;}
私は、配列のどこかに空にするための変数を設定する必要がありますか?データのキャリースルーが発生するのはなぜですか?特定のfield_id
に接続されている値のみを表示するにはどうすればよいですか?