更新选择字段基于其他选择字段(ACF)

问题描述:

我一直在寻找这一段时间,我真的不能找到一个解决方案的选择。我已经阅读了大量的文章和关于动态填充选择字段的所有内容,但是它们实现的方式并不是我正在寻找的。更新选择字段基于其他选择字段(ACF)

我有一个页面,用户可以选择多个行为(从法CPT)的中继器领域。

在这些行为确实是中继器领域中,他们可以添加不同时间的行为是要执行。

我的'选择行为'直放站是这样的。

  • 选择法案(选场,显示了从行为CPT所有帖子)
  • 选择时间(选择字段,需要从所选择的行为后加载在“选择行为”改变自定义元数据)。

我在寻找的是,当用户选择一个行为时,我想选择'选择时间'选择字段来加载用户添加到行为职位的时间。

所以我们假设我有A法案Bodom的孩子。我在帖子中添加了四次。 21.00,22.00,23.00和24.00。

我也有Act B. Social Distortion。我在帖子中增加了三次。 15.00,16.00和17.00。

我想要的是在我的转发器中,当我选择行动孩子的博多姆,我想时间选择该转发器部分更新与我已添加到博多行动的孩子的时间。

然后,我在行动中继器,在这里我选择社会畸变添加其他行为。然后,我希望相应的时间选择以我添加到社交失真行为的时间进行更新。

我到目前为止所尝试的是添加一些JS来执行选择更改,我不知道具体触发他各自的时间选择更新字段,因为中继器是动态设置和我没有选择该字段的ID或密钥。

什么会很酷,但我不知道如何实现这一点,是从我的JS文件触发acf/load_field/key=blabla函数,在那里我可以通过查找第一个选择后面的第一个选择来触发改变事件。然后在负载场动作被触发时执行一个函数,并在我的时间加载正确的时间来选择相应的动作。

很抱歉,如果这是一个有点混乱,我真的不知道该怎么形容不同这一点,但如果你想要更多的信息,请咨询!

谢谢。

我觉得在这种情况下,因为你需要的是动态的,你可以看看使用Wordpress内置的Ajax来处理这一个。所以,你可以做的是触发改变一个Ajax调用该选择字段做这样的事情

jQuery('act_select_field').change(function(){ 
    jQuery.ajax({ 
     url: "/wp-admin/admin-ajax.php", 
     type: 'POST', 
     data: { 
      action: 'get_related_act_times', 
      act_id: //send through the act ID value,    
     }, 
     dataType: 'html', 
     success: function (result) { 
      //Use the html to populate your time select field 
     }, 
     error: function (errorThrown) { 
      console.log(errorThrown); 
     } 
    }); 
}) 

然后,在你的函数。PHP,注册一个函数来处理这个调用,就像这样:

add_action('wp_ajax_get_related_act_times', 'get_act_times'); 
add_action('wp_ajax_nopriv_get_related_act_times', 'get_act_times'); 
/** 
* Get a list of events from Clear Bookings 
*/ 
function get_act_times(){ 
    $act_id = $_POST['act_id']; 
    $related_times = get_field('times_repeater_field',$act_id); 
    foreach($realted_times as $time){ 
     //Build up your select html here 
    } 
    echo select_html 
    die(); 
} 

如果您想了解更多一些关于事物的联系阿贾克斯,食品有很多信息:https://codex.wordpress.org/AJAX_in_Plugins。这应该有希望让你开始动态填充你的第二个下拉列表 - 尽管你需要调整代码以在你自己的系统上工作