因此,我建立了一个Wordpress网站,它有自定义的帖子类型和对其他帖子类型的引用。
示例:
自定义贴子类型1-在两个字段上引用类型1-在多个字段上引用类型2-前端显示和工作正常。问题是我需要一种更简单的方式让我的客户能够编辑引用。我建立了用于创建新帖子或在新选项卡中编辑所选帖子的链接,但我的客户希望所有链接都显示在一个屏幕上,以帮助他管理帖子类型上的众多字段。我的想法是构建一个ajax页面,以便在单击链接时在灯箱中返回表单。然后,从lightbox提交后,获取新帖子的id,并将当前选定的项目更改为新项目(如果要引用创建新帖子)。
我通常在Drupal中构建,这将是Drupal\\u get\\u form()的不二之选,然后用它做我想做的事情,但我在Wordpress中找不到任何关于如何做这件事的文档。(是的,我知道这不是Wordpress的强项,但我需要在Wordpress中完成。)我只考虑重建新岗位。php文件,但我得到一个更新数据库屏幕,上面说我的数据库没有更新,这是一种非常黑客的方式,所以如果可能的话,我宁愿不这样做。
我发现这篇文章很接近我的需要:AJAX post into pop-up div
它的问题是,在提交ajax表单时,它没有创建新的帖子。我猜这是因为我需要通过Wordpress的ajax调用来运行提交,但即使这样也似乎失败了,并返回了0响应。
JavaScript:The#new post form是加载到lightbox中的表单:
$(\'#new-post\').submit(function (e) {
e.preventDefault();
var data = $(this).serializeArray();
data[\'action\'] = \'post_form_ajax\'
jQuery.post(ajaxurl, data, function(response) {
alert(\'Got this from the server: \' + response);
});
});
Wordpress插件:
add_action( \'wp_ajax_post_form_ajax\', \'MYPLUGIN_post_form_ajax\' );
function MYPLUGIN_post_form_ajax () {
echo \'work\';
wp_die();
}
非常感谢您的帮助。
更新获得了提交AJAX的表单。我需要不同形式的数据(作为对象),数据[\'action\']行后缺少分号。
要重新格式化数据,我使用了此函数(@请参阅https://stackoverflow.com/questions/1184624/convert-form-data-to-javascript-object-with-jquery)
$.fn.serializeObject = function() {
var o = {};
var a = this.serializeArray();
$.each(a, function() {
if (o[this.name] !== undefined) {
if (!o[this.name].push) {
o[this.name] = [o[this.name]];
}
o[this.name].push(this.value || \'\');
} else {
o[this.name] = this.value || \'\';
}
});
return o;
};
然后调整提交功能:
$(\'#new-post\').submit(function (e) {
e.preventDefault();
var data = $(this).serializeObject();
data[\'action\'] = \'post_form_ajax\';
jQuery.post(ajaxurl, data, function(response) {
alert(\'Got this from the server: \' + response);
});
});
最后一步是了解如何从我的ajax函数MYPLUGIN\\u post\\u form\\u ajax()动态保存或更新自定义帖子数据。再次感谢。