使用外部AJAX的WP_Widget动态字段数组

时间:2015-02-16 作者:sjiamnocna

我正在创建Wordpress小部件,我必须通过JQUERY动态添加部分代码。ajax()一个JQUERY。将()追加到小部件窗体。我需要它,以便能够通过函数update()保存它。我对表单的每个字段都有PHP函数,但在wp\\U小部件中,我必须通过其函数获取名称和ID。

如果我使用函数在wp\\u小部件子项之外获取名称:

function gentitle($title,$num=\'\'){
            $widget=new WP_Widget();
            return
            sprintf(\'%1$s[%2$s]\',
                $widget->get_field_name($title),
                $num
            );
        }
它返回错误,如果我将窗体作为我的小部件的子类,它也会失败。

我需要能够将名称放入表单函数中,并能够使用AJAX将其放入小部件表单中。。。

在类中它可以工作,但我不能将其用于生成表单的函数(cos$v=new testwidget()$v->genname;返回错误)。

class awidget_test extends WP_Widget {
    function awidget_test() {
        $widget_ops=array(\'classname\'=>\'atestwidget\',\'description\'=>\'Just testing something\');
        $control_ops=array(\'width\'=>300,\'height\'=>350,\'id_base\'=>\'atest-widget\');
        $this->WP_Widget(\'atestwidget-widget\',\'Actually testing\',$widget_ops,$control_ops);
    }
    function widget($args,$instance){
        extract($args);
    }
    function update($new_instance,$instance) {
        return $instance;
    }
        function gentitle($title,$num=\'\'){
            return
            sprintf(\'%1$s[%2$s]\',
                $this->get_field_name($title),
                $num
            );
        }
    function form($instance) {

            echo $this->gentitle(\'blabla\');

    }
}
有什么想法吗?

1 个回复
最合适的回答,由SO网友:david.binda 整理而成

我不确定我是否完全理解您想要实现的目标,但我建议尝试根据您从生成的小部件的源代码中获得的数据来构建字段的ID和名称。如果您查看代码,您会发现每个小部件都有一个隐藏的表单字段,名为id_basewidget-id - 这应该足以找出正确的字段名,对吗?

Developer tools screenshot of text widget's source code

结束

相关推荐

允许admin-ajax.php接收“application/json”而不是“x-www-form-urlencode”

我在用AngularJS的$http 函数将我的有效负载发送到WordPressadmin-ajax.php 子系统,但后者似乎只接受x-www-form-urlencoded 数据,而不是application/json 由Angular提供。我知道there are ways 使$http函数更像$.post(), 但这是荒谬的——既然已经是JSON,为什么还要将一堆JSON数据转换成一种形式呢?为此目的—is there any way of instructing admin-ajax to co