在Wordpress中从JavaScript更新帖子
我已经编写了一个脚本的开头,该脚本应用于Wordpress中管理区域的edit.php页面。该脚本使用插件收集列中显示的信息id、title和几个ACF字段,并使用这些信息为每个帖子生成div,然后使用这些新div创建一个实例 其思想是前端的帖子列表应该用Muuri呈现,以创建一个砌体布局。为了让用户更容易地设置砖石结构中每个项目的排列和大小,我希望用户在管理区域使用带有拖放功能的Muuri,以便他们可以拖放每个帖子并设置位置。然后我想把订单和每个帖子的大小从管理员传递到前端 这是我添加到edit.php页面的脚本: 我的想法是,然后我希望将属性从Muuri实例(id、order和代表每个项目大小的CSS类)传递到某种PHP函数,该函数在单击submit按钮时更新数据库中每个post的ACF字段 这就是我开始创造的功能:在Wordpress中从JavaScript更新帖子,javascript,php,wordpress,Javascript,Php,Wordpress,我已经编写了一个脚本的开头,该脚本应用于Wordpress中管理区域的edit.php页面。该脚本使用插件收集列中显示的信息id、title和几个ACF字段,并使用这些信息为每个帖子生成div,然后使用这些新div创建一个实例 其思想是前端的帖子列表应该用Muuri呈现,以创建一个砌体布局。为了让用户更容易地设置砖石结构中每个项目的排列和大小,我希望用户在管理区域使用带有拖放功能的Muuri,以便他们可以拖放每个帖子并设置位置。然后我想把订单和每个帖子的大小从管理员传递到前端 这是我添加到edi
$(document).on("click", ".submitGrid", function(){
var allItems = grid.getItems();
var payload = [];
var item = {};
for (i = 0; i < allItems.length; i++) {
item = {
order: i,
layout: allItems[i]._element.dataset.layout,
id: allItems[i]._element.dataset.id.replace(/\D/g,'')
}
payload.push(item);
}
})
它为Muuri网格中的每个项目/帖子创建一个包含对象的数组,其中属性使用for循环的索引设置为项目的顺序,然后使用最初加载页面或更改网格布局时在元素上设置的数据字段设置id和布局
如何将这些信息发送到PHP函数,然后在这些对象的帮助下更新数据库中的每篇文章?通过jQuery ajax函数发送,因为这就是您正在使用的功能
$(document).on("click", ".submitGrid", function(){
var allItems = grid.getItems();
var payload = [];
var item = {};
for (i = 0; i < allItems.length; i++) {
item = {
order: i,
layout: allItems[i]._element.dataset.layout,
id: allItems[i]._element.dataset.id.replace(/\D/g,'')
}
payload.push(item);
}
var itemdata = JSON.stringify(payload);
$.ajax({
url: "/path/to/phpfile.php",
type: "POST",
data: {
postitems: itemdata
},
beforeSend: function() {
},
success: function(response) {
console.log(response);
}
});
});
谢谢不过,我在PHP文件中发现了500个内部服务器错误。知道为什么吗?对不起。。。。更新答案。。。从$_POST['positems']中删除右括号。应该是$u POST['positems'];非常感谢你!现在我只想知道如何用这个更新帖子
$(document).on("click", ".submitGrid", function(){
var allItems = grid.getItems();
var payload = [];
var item = {};
for (i = 0; i < allItems.length; i++) {
item = {
order: i,
layout: allItems[i]._element.dataset.layout,
id: allItems[i]._element.dataset.id.replace(/\D/g,'')
}
payload.push(item);
}
var itemdata = JSON.stringify(payload);
$.ajax({
url: "/path/to/phpfile.php",
type: "POST",
data: {
postitems: itemdata
},
beforeSend: function() {
},
success: function(response) {
console.log(response);
}
});
});
$postitems = $_POST['postitems'];
$postArray = json_decode($postitems);
print_r($postArray);
exit();