0

Ich benutze die ACF tutorial here to build from. Was ich tun möchte, ist die Werte in einem Text-Unterfeld zu verwenden, um andere ausgewählte Unterfelder innerhalb der zu füllen dasselbe Repeaterfeld. Ich weiß, es klingt rekursiv und vielleicht ist das prohibitiv. Der Feldadministrator wird nicht im laufenden Betrieb ajax-y oder aktualisieren, es ist eher ein Admin-Feld für andere Website-Funktionen.Wie man Unterfeld-Selektionen innerhalb eines Elternfeldes automatisch auffüllt

Wie auch immer, hier ist, was ich bisher habe.

  • ACF Repeater field = core_values ​​
  • Seite das Feld auf = ist valuesadmin
  • Quelltext Unterfeld innerhalb core_values ​​= value_name
  • Zielunterfelder ( jeweils um dynamisch propagierte wählt aus value_name) =
    • constructor1_name
    • constructor2_name
    • constructor3_name
    • destructor1_name
    • destructor2_name

Ich habe versucht, den Code in das Tutorial oben und es in das Thema der functions.php und in der Hauptdatei eines Plugins setzen verknüpft zu ändern Ich erstelle andere benutzerdefinierte Funktionen.

/** 
* 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'); 

Offensichtlich propagiert das nicht die Select-Sub-Felder wie ich möchte.

Fragen: - Ist das sogar möglich (die value_name Felder sind alle bereits mit Werten gefüllt) - Wohin soll der Funktionscode gehen? - Vielleicht habe ich den Code irgendwie gemangelt

Vielen Dank im Voraus!

+0

Ich würde versuchen, etwas anderes als Wordpress zu verwenden :-). Aber wenn das WP-Plugin keine buildin-Funktion hat, die Ihnen hilft, Optionen zu laden, die nach einem vorher gewählten Wert gefiltert sind, dann sollten Sie versuchen, Javascript zu verwenden. Oder die Funktion jquery.ajax: http://api.jquery.com/jquery.ajax/ – Oliver

Antwort

0

Nun, ich habe die Funktionalität, nach der ich suchte, zuerst auf eine ACF-Optionsseite verschoben und dann ein weiteres ACF-Feld (values_master) erstellt, mit dem ich die Werte in einem zweiten Feld auf der Options-Seite dynamisch auffüllen konnte. Ich bin mir also nicht sicher, ob dies rekursiv funktioniert, aber es funktioniert.

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'); 
Verwandte Themen