通过REST-API保存自定义POST类型POST_META失败

时间:2018-12-07 作者:fefe

我尝试用wp json保存我的自定义帖子类型元数据,但在我的情况下不起作用

我使用创建自定义帖子类型jjgrainger\'s 分类如下

$arguments = array(
        \'public\'       => true,
        \'show_in_rest\' => true,
    );

    $survey = new PostType(\'survey\', $arguments);
    $survey->register();

    register_meta( \'survey\', \'survey_data\', array(
        \'show_in_rest\' => true,
        \'single\' => true
    ) );

    return $survey;
但是当我保存以下结构时

 post: {
                    title: "Title",
                    content: "some content",
                    status: \'publish\',
                    id: null,
                    survey_data: null,
                    meta: {
                        survey_data: [{\'some\': \'asdasd\'}, {\'some\':\'ssdfs\'}]
                    }
                },
将创建帖子,但不会创建元数据

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

这个register_meta() 函数定义如下:

function register_meta( $object_type, $meta_key, $args, $deprecated = null )
以及$object_type (截至目前)必须post 对于所有帖子类型。因此,请使用以下方法:

register_meta( \'post\', \'survey_data\', ... )
请参见// {comments} 在下面的代码中,我从here:

<?php
// The object type. For custom post types, this is \'post\';
// for custom comment types, this is \'comment\'. For user meta,
// this is \'user\'.
$object_type = \'post\';
$args1 = array( ... );
register_meta( $object_type, \'my_meta_key\', $args1 );
更新如果您想将meta限制为某个帖子类型,请使用object_subtype 类似这样的参数:(该参数是在WordPress版本4.9.8中添加的)

// Add survey_data meta support to `survey` post type in REST API.
register_meta( \'post\', \'survey_data\', array(
  \'show_in_rest\'   => true,
  \'object_subtype\' => \'survey\',
  ...
) );

// Add survey_data meta support to `my_cpt` post type in REST API.
register_meta( \'post\', \'survey_data\', array(
  \'show_in_rest\'   => true,
  \'object_subtype\' => \'my_cpt\',
  ...
) );
正如你所看到的,只要复制相同的register_meta() 呼叫其他职位类型。但是$object_type 需要是post, 即使对于页面(page 职位类型)。

相关推荐

列出分类法:如果分类法没有POST,就不要列出分类法--取决于定制的POST-META?

这可能很难解释,我不知道是否有解决办法!?我有一个名为“wr\\u event”的自定义帖子类型和一个名为“event\\u type”的分层自定义分类法。自定义帖子类型有一个元框,用于event_date 并且与此帖子类型关联的所有帖子都按以下方式排序event_date. 我在循环中有一个特殊的条件来查询event_date 已经发生了-在这种情况下,它没有显示,但只列在我的档案中。就像你可以使用wp_list_categories() 我编写了一个自定义函数,它以完全相同的方式列出所有分类术语。现在