我已经在Wordpress中设置了自定义帖子类型的CRM。我很惊讶它在Wordpress的Backbone API中与它自己的模型一起出现。我真的很想了解它,但是我在这里碰到了墙。
我有2个上述自定义帖子类型的帖子保存到WP中。这是我尝试执行的操作的示例:
var crm = new wp.api.models.Crm();
crm.fetch().then(function(crmItems){
console.log(crmItems);
});
效果很好,获取了两个帖子。它们是正确的帖子类型。一切都很好,真的。
然后进行另一项测试:
var crm = new wp.api.models.Crm({id: 6257});
crm.fetch().then(function (crmItems) {
console.log(crmItems);
});
这也按预期工作,返回一个帖子。很好。
但是然后:
var crm = new wp.api.models.Crm({data: {per_page: 1}});
crm.fetch().then(function (crmItems) {
console.log(crmItems);
});
该帖子只返回一个帖子,但同时返回两个帖子。我从文档中复制了参数,仅将数字从25更改为1。我在Firefox的开发工具“网络”标签中找到了该请求。请求URL为https://[my-site]/wp-json/wp/v2/crm
。未发送参数。那真是怪了。请求网址不应该看起来像https://[my-site]/wp-json/wp/v2/crm?per_page=1
吗?将该URL粘贴到地址栏中可以正常工作,并且按预期返回仅一篇文章。
此外,我学会了向返回对象添加元字段,如下所示:
add_action('rest_api_init', function () {
$fields = array('visibility');
foreach ($fields as $field) {
register_rest_field('crm', $field, array(
'get_callback' => function ($params) use ($field) {
return get_post_meta($params['id'], $field, true);
}, 'updata_callback' => function ($value, $object, $fieldName) {
return update_post_meta($object->ID, $fieldName, $value);
},'schema' => array(
'description' => __( 'Visibility.' ),
'type' => 'string'
)
));
}
});
该字段显示出来,很好,但是我无法找到一个好的指南来帮助我了解如何使用此字段来过滤收集的内容。怎么做?