Я установил пользовательский тип записи CRM в Wordpress. Я был приятно удивлен, что он появился со своей собственной моделью в 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
Параметры не отправляются. Это странно. Разве URL-адрес запроса не должен выглядеть примерно так: 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'
)
));
}
});
Поле отображается, хорошо, но я не смог найти хорошего руководства, которое помогло бы мне понять, как фильтровать выборку коллекции, используя это поле. Как это сделать?