2015-12-16 125 views
0

我在嘗試保存我正在創建的插件的設置時遇到了一些麻煩。WordPress插件設置

我試圖實現的基本功能是,插件用戶可以選擇一個自定義帖子類型,並在這樣做時它將返回該帖子對象的所有字段類型。

現在,上述字段類型,他們可以選擇他們想要顯示的東西,即如果我有一個產品,我只想看到它的價格和描述,他們可以簡單地點擊相應的複選框,它會更新其他插件功能。

目前,我使用Javascript來創建一個選定的複選框的數組,然後我打算保存爲插件選項。

如何從Javascript獲取該數組作爲插件選項(option.php)參數傳遞,然後能夠根據保存的設置使用它來填充相應的複選框。

下面是設置頁面的一個簡單例子,因爲我的解釋並不清楚。

https://www.dropbox.com/s/ynwbs8bwj30g57n/before.png https://www.dropbox.com/s/jg2th2wrfd964zp/after.png

感謝您的任何反饋!

回答

0

我很久沒有這樣做了,所以這可能不是完美的,但這裏有一個關於使用AJAX解決問題的想法(在jQuery中是一個JavaScript庫)的要點。 Ajax將允許您使用鉤子將JSON字符串發送到您的functions.php中的php函數。

首先在你的functions.php中,你需要本地化wp ajax腳本。

function add_ajax(){ 
    wp_localize_script('main-script', 'options', array('ajax_url' => admin_url('admin-ajax.php'))); 
} 
add_action('wp_head', 'add_ajax'); 

然後,你需要添加一個動作鉤,這與wp_ajax_開始。這個鉤子綁定到一個可以處理你的選項的函數,並將在一個jQuery腳本中調用。

add_action('wp_ajax_options', 'handle_options'); 
add_action('wp_ajax_nopriv_options', 'handle_options'); 

function handle_options() { 
     $options = $_POST['options']; 
     //DO SOMETHING 
     wp_die(); // this is required to terminate immediately and return a proper response 
} 

之後,你需要你的用戶選擇自己的選擇,這將你的數組轉換成JSON和發送使用動作鉤子wp_ajax_options後進行Ajax調用。事情是這樣的:

var options = = JSON.stringify(yourArray); 
jQuery.ajax({ 
     type: 'POST', 
     url: output.ajax_url, 
     data : { 
      action : 'options', 
      'options': options 
     }, 
     success: function(response){ 
      //you can do something here with the response. 
     } 
    }); 

肯定檢查這些資源更多:

https://codex.wordpress.org/AJAX_in_Plugins

https://premium.wpmudev.org/blog/using-ajax-with-wordpress/

+0

@PeterTheLobster您好,感謝您的反饋! 我已經做了一個非常類似的事情來從JavaScript到WordPress的數組,我的問題是然後將所述數組保存到WP設置,並能夠成功地檢索它。 – connorb

+0

@Connor會幫助你嗎? http://wordpress.stackexchange.com/questions/61431/efficient-way-of-saving-plugin-options – PeterTheLobster

+0

謝謝!這對我有些幫助,但是我試過這麼多種不同的方式,請您概述一下我需要調用每個設置API函數的順序,以便簡單地保存某些內容?不過,我似乎這樣做,它只是不工作...我是相當新的WordPress的,儘管看起來很直截了當,我努力讓我的頭在設置API。 – connorb