首页 > 解决方案 > wordpress 以编程方式添加帖子标签

问题描述

我正在尝试使用 PHP 和 JS 以编程方式将帖子标签添加到新帖子中。我有使用 ajax 发送我想要添加的 id 的代码,PHP 检查它们是否存在,如果不存在则创建它们。然后它按名称搜索,并将 ID 发送回 Ajax。

我的问题在于将所有帖子标签添加到帖子中,因为只有最后一个将自己添加到帖子中。

success: function(data) {
    for(var i = 0; i < data.length; i++) {
        var obj = data[i];
        console.log(obj.term_id);
        wp.data.dispatch('core/editor').editPost({tags: [obj.term_id]})
    }
},

Console.log 写入所有应该添加的帖子标签 ID。在 for 循环中使用时wp.data.dispatch('core/editor').editPost({tags: [obj.term_id]}),它只会将最后一个 ID 添加到帖子中。在我的具体情况下,我有两个 ID,一个用于每个帖子标签(id 51 和 110),但它只将 ID 110 添加到帖子中。

不应该添加两者,因为它在 for 循环内?

谢谢

标签: javascriptphpajaxwordpress

解决方案


在不了解 wp.dataapi 的情况下,最好的猜测是您想要创建完整的值数组并且只调用editPost()一次......传入整个数组。

您可以使用Array#map()从 中创建完整的术语数组data

就像是:

success: function(data) {

    var termsArray = data.map(function(el){ 
        return el.term_id; 
    });

    wp.data.dispatch('core/editor').editPost({tags: termsArray})

},

推荐阅读