根据其他 select 字段 (ACF) 的选择更新转发器中的 select 字段
Update select field in repeater based upon the choice of other select field (ACF)
我已经找了一段时间了,但我真的找不到解决办法。我已经阅读了很多文章以及所有关于动态填充 select 字段的文章,但是它们的实现方式并不是我真正想要的。
我在页面上有一个转发器字段,用户可以在其中 select 执行多项操作(来自 Act CPT)。
在这些动作中有一个转发器字段,他们可以在其中添加动作将要执行的不同时间。
我的'choose acts'中继器是这样的。
- 选择行为(select 字段,显示来自行为 cpt 的所有 post)
- 选择时间(select 字段,需要在 'choose act' 更改时从所选行为 post 加载自定义元数据。
我正在寻找的是,当用户选择一个行为时,我希望 'Choose Time' select 字段加载用户在行为 post 中添加的时间。
假设我有 Bodom 的 A 幕 Children。我向 post 添加了四次。 21.00、22.00、23.00 和 24.00。
我还有第二幕。社会扭曲。我在 post 中添加了 3 次。 15.00、16.00 和 17.00。
当我 select Bodom 的行为 Children 时,我想要的是在我的转发器中,我希望转发器部分的时间 select 与我的时间一起更新'已经添加到 Bodom 法案的 Children 中。
然后我在行为中继器中添加另一个行为,其中我 select 社会扭曲。然后我希望相应的时间 select 与我添加到社会扭曲法案的时间一起更新。
到目前为止我尝试的是添加一些 JS 以在 select 更改时执行,我不知道具体触发他各自的时间 select 以更新字段,因为转发器是动态设置的,我没有为该字段选择 ID 或密钥。
从我的 JS 文件中触发 acf/load_field/key=blabla
函数会很酷,但我不知道如何实现它,我可以在其中通过找到第一个 select 在触发更改事件的那个之后。然后在加载字段动作被触发时执行一个函数,并在我的时间 select 为相应的动作加载正确的时间。
抱歉,如果这有点令人困惑,我真的不知道如何用不同的方式描述它,但如果您想了解更多信息,请询问!
谢谢。
我觉得在这种情况下,因为你需要的是动态的,你可以考虑使用 Wordpress 的内置 Ajax 来处理这个问题。所以,你可以做的是触发一个 ajax 请求更改 select 字段来做这样的事情
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);
}
});
})
然后,在您的 functions.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();
}
如果您想阅读更多关于管理 Ajax 方面的内容,Codex 有很多信息:https://codex.wordpress.org/AJAX_in_Plugins。这应该有望让您开始动态填充第二个下拉列表 - 尽管您需要调整代码以在您自己的系统上工作
我已经找了一段时间了,但我真的找不到解决办法。我已经阅读了很多文章以及所有关于动态填充 select 字段的文章,但是它们的实现方式并不是我真正想要的。
我在页面上有一个转发器字段,用户可以在其中 select 执行多项操作(来自 Act CPT)。
在这些动作中有一个转发器字段,他们可以在其中添加动作将要执行的不同时间。
我的'choose acts'中继器是这样的。
- 选择行为(select 字段,显示来自行为 cpt 的所有 post)
- 选择时间(select 字段,需要在 'choose act' 更改时从所选行为 post 加载自定义元数据。
我正在寻找的是,当用户选择一个行为时,我希望 'Choose Time' select 字段加载用户在行为 post 中添加的时间。
假设我有 Bodom 的 A 幕 Children。我向 post 添加了四次。 21.00、22.00、23.00 和 24.00。
我还有第二幕。社会扭曲。我在 post 中添加了 3 次。 15.00、16.00 和 17.00。
当我 select Bodom 的行为 Children 时,我想要的是在我的转发器中,我希望转发器部分的时间 select 与我的时间一起更新'已经添加到 Bodom 法案的 Children 中。
然后我在行为中继器中添加另一个行为,其中我 select 社会扭曲。然后我希望相应的时间 select 与我添加到社会扭曲法案的时间一起更新。
到目前为止我尝试的是添加一些 JS 以在 select 更改时执行,我不知道具体触发他各自的时间 select 以更新字段,因为转发器是动态设置的,我没有为该字段选择 ID 或密钥。
从我的 JS 文件中触发 acf/load_field/key=blabla
函数会很酷,但我不知道如何实现它,我可以在其中通过找到第一个 select 在触发更改事件的那个之后。然后在加载字段动作被触发时执行一个函数,并在我的时间 select 为相应的动作加载正确的时间。
抱歉,如果这有点令人困惑,我真的不知道如何用不同的方式描述它,但如果您想了解更多信息,请询问!
谢谢。
我觉得在这种情况下,因为你需要的是动态的,你可以考虑使用 Wordpress 的内置 Ajax 来处理这个问题。所以,你可以做的是触发一个 ajax 请求更改 select 字段来做这样的事情
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);
}
});
})
然后,在您的 functions.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();
}
如果您想阅读更多关于管理 Ajax 方面的内容,Codex 有很多信息:https://codex.wordpress.org/AJAX_in_Plugins。这应该有望让您开始动态填充第二个下拉列表 - 尽管您需要调整代码以在您自己的系统上工作