2016-03-05 180 views
0

我一直在尋找這一段時間,我真的不能找到一個解決方案的選擇。我已經閱讀了大量的文章和關於動態填充選擇字段的所有內容,但是它們實現的方式並不是我正在尋找的。更新選擇字段基於其他選擇字段(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函數,在那裏我可以通過查找第一個選擇後面的第一個選擇來觸發改變事件。然後在負載場動作被觸發時執行一個函數,並在我的時間加載正確的時間來選擇相應的動作。

很抱歉,如果這是一個有點混亂,我真的不知道該怎麼形容不同這一點,但如果你想要更多的信息,請諮詢!

謝謝。

回答

0

我覺得在這種情況下,因爲你需要的是動態的,你可以看看使用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。這應該有希望讓你開始動態填充你的第二個下拉列表 - 儘管你需要調整代碼以在你自己的系統上工作