2015-12-16 79 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