将值发布到具有高级自定义字段的自定义发布类型

时间:2020-05-21 作者:user10980228

我正在尝试使用Ajax和jQuery将数据发布到自定义发布类型。标题字段与标准wordpress字段一样工作,但颜色字段不工作。我还尝试用ACF本身的名称替换“color”,如“field\\u 5ec63bc5b6fe0”,但这也不起作用。

$(\'.submit-color\').on(\'click\', function (e) {
    e.preventDefault();
    var newColor = {
        \'title\': $( \'.title\' ).val(),
        \'color\': $( \'.color\' ).val(),
        \'status\': \'private\'
    }
    $.ajax({
            url: myData.root_url + \'/wp-json/wp/v2/color/\',
            type: \'POST\',
            data: newColor,
            beforeSend: (xhr) => {
            xhr.setRequestHeader(\'X-WP-Nonce\', myData.nonce);
            }
        })
        .done(function (data) {
            console.log(data);

        })
        .fail(function (jqXHR, textStatus, errorThrown) {
            console.log(textStatus + \': \' + errorThrown);
            console.warn(jqXHR.responseText);
        });
})

1 个回复
最合适的回答,由SO网友:Sally CJ 整理而成

如果自定义字段的名称(即meta键)正确,并且该字段已为REST API启用,那么您应该能够通过将其添加到meta 属性,它是元键值对的数组,如下所示:

var newColor = {
  \'title\': $( \'.title\' ).val(),
  \'meta\': {
    \'color\': $( \'.color\' ).val(),
    \'key2\': \'value\',
    \'key3\': \'value\',
    // ...
  },
  \'status\': \'private\'
}
Update: 您可以使用register_meta() or register_post_meta() 为REST API启用meta:(不使用任何第三方插件)

// First parameter is the post type.
register_post_meta( \'color\', \'color\', [
    \'single\'       => true,
    \'show_in_rest\' => true,
    // Other args, if any.
] );
Update 2: 关于“ACF到REST”插件,您应该查看文档here, 但据我所知:

您希望启用过滤器here.

使用端点/wp-json/acf/v3/color 添加或更新color 自定义帖子。

使用fields 属性而不是meta 对于默认端点(/wp-json/wp/v2/color). 例如,您可以使用\'fields\': { \'color\': $( \'.color\' ).val() } 在JS中。

(你应该自己找到。但无论如何,我希望这有帮助,请查看文档以获得进一步帮助。)