【问题标题】:Wordpress Plugin SettingsWordPress 插件设置
【发布时间】:2016-03-22 13:28:28
【问题描述】:

我在尝试保存我正在创建的插件的设置时遇到了一些麻烦。

我想要实现的基本功能是,插件用户可以选择自定义帖子类型,这样做会返回该帖子对象的所有字段类型。

现在,他们可以选择他们想要显示的上述字段类型,即如果我有一个产品,我只想看到它的价格和描述,他们可以简单地单击相应的复选框,它会更新其他插件功能.

目前,我正在使用 Javascript 创建一个包含选定复选框的数组,然后我打算将其保存为插件选项。

如何从 Javascript 获取该数组作为插件选项 (option.php) 参数传递,然后能够使用它根据保存的设置填充相应的复选框。

这是设置页面的一个简单示例,以防我的解释不清楚。

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

感谢您的任何反馈!

【问题讨论】:

    标签: javascript php wordpress plugins


    【解决方案1】:

    我很久没有这样做了,所以这可能并不完美,但这里是我关于使用 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
    }
    

    之后,您需要在用户选择他们的选项后进行 ajax 调用,这会将您的数组转换为 JSON 并使用操作挂钩 wp_ajax_options 发送。像这样的:

    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/

    【讨论】:

    • 嗨@PeterTheLobster,感谢您的反馈!我已经在做一个非常相似的事情来将数组从 javascript 获取到 wordpress,然后我的问题是将所述数组保存到 wp 设置并能够成功检索它。
    • @Connor 这对你有帮助吗? wordpress.stackexchange.com/questions/61431/…
    • 谢谢!这对我有点帮助,但是我尝试了很多不同的方法,您能否概述一下我需要调用每个设置 api 函数以便简单地保存一些东西的顺序?但是,我似乎做到了,但它不起作用......我对 Wordpress 还是很陌生,尽管看起来很简单,但我很难理解设置 api。
    猜你喜欢
    • 2016-08-16
    • 2012-04-30
    • 1970-01-01
    • 2021-10-07
    • 2017-09-19
    • 1970-01-01
    • 1970-01-01
    • 2012-06-21
    • 1970-01-01
    相关资源
    最近更新 更多