簡體   English   中英

如何自動填充父字段中的子字段選擇

[英]How to auto-populate sub-field selects from within a parent field

我在這里使用ACF教程進行構建。 我想做的是使用文本子字段中的值來填充同一轉發器字段中的其他選擇子字段。 我知道這聽起來是遞歸的,也許這是禁止的。 字段admin不會立即更改或更新,它更多是用於其他站點功能的admin字段。

無論如何,這是我到目前為止所擁有的。

  • ACF中繼器字段= core_values
  • 頁面上的字段位於= valuesadmin
  • core_values = value_name中的源文本子字段
  • 目標子字段(每個子字段都需要從value_name中動態傳播選擇)=
    • builder1_name
    • constructor2_name
    • constructor3_name
    • destructor1_name
    • destructor2_name

我試圖在上面鏈接的教程中修改代碼,並將其放在主題的functions.php和插件的主文件中,我正在構建其他自定義函數。

/**
* ACF population functions
*/

function acf_load_core_values_field_choices( $field ) {

// reset choices
$field['choices'] = array();


// if has rows
if( have_rows('core_values', 'valuesadmin') ) {

    // while has rows
    while( have_rows('core_values', 'valuesadmin') ) {

        // instantiate row
        the_row();


        // vars
        $value = get_sub_field('value_name');
        $label = get_sub_field('value_name');


        // append to choices
        $field['constructor1_name'][ $value ] = $label;
        $field['constructor2_name'][ $value ] = $label;
        $field['constructor3_name'][ $value ] = $label;
        $field['destructor1_name'][ $value ] = $label;
        $field['destructor2_name'][ $value ] = $label;

    }

}


// return the field
   return $field;

}

add_filter('acf/load_field/name=constructor1_name',    'acf_load_core_values_field_choices');
add_filter('acf/load_field/name=constructor2_name',   'acf_load_core_values_field_choices');
add_filter('acf/load_field/name=constructor3_name', 'acf_load_core_values_field_choices');
add_filter('acf/load_field/name=destructor1_name', 'acf_load_core_values_field_choices');
add_filter('acf/load_field/name=destructor2_name', 'acf_load_core_values_field_choices');

顯然,這並不是我想要的那樣傳播選擇子字段。

問題:-甚至可能(value_name字段中都已填滿值)-函數代碼應該放在哪里? -也許我以某種方式修改了代碼

提前致謝!

好吧,我通過將所有這些都移到ACF選項頁面,然后創建了另一個ACF字段(values_master)來實現了所需的功能,通過該字段我可以在選項頁面的第二個字段中動態填充值。 所以我不確定這是否由於某些遞歸而無法正常工作,但它是否有效。

function acf_load_value_field_choices( $field ) {

    // reset choices
    $field['choices'] = array();


    // if has rows
    if( have_rows('values_master', 'option') ) {

        // while has rows
        while( have_rows('values_master', 'option') ) {

            // instantiate row
            the_row();


            // vars
            $value = get_sub_field('value_name');
            $label = get_sub_field('value_name');


            // append to choices
            $field['choices'][ $value ] = $label;

        }

    }


    // return the field
    return $field;

}

add_filter('acf/load_field/name=constructor1_name', 'acf_load_value_field_choices');
add_filter('acf/load_field/name=constructor2_name', 'acf_load_value_field_choices');
add_filter('acf/load_field/name=constructor3_name', 'acf_load_value_field_choices');
add_filter('acf/load_field/name=destructor1_name', 'acf_load_value_field_choices');
add_filter('acf/load_field/name=destructor2_name', 'acf_load_value_field_choices');
add_filter('acf/load_field/name=value_mstr_name', 'acf_load_value_field_choices');

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM