Я использую Version 2.0-beta15
с пользовательским типом сообщения, который наследуется от WP_REST_Posts_Controller, но ему нужно запросить дату на основе поля acf. Хлоп!WP-API Получить сообщения после определенной даты
конечных точек Params
/wp-json/wp/v2/almanac_entry?per_page=3&filter[orderby]=acf_almanac_date&after=2016-12-23T00:00:00&filter[date_query[column]]=acf_almanac_date
Отклик
Ответ возвращает три элемента, но должны быть только два, где два после даты в списке, а третий перед указанная дата. Ниже приведено три значения элемента данных из acf_almanac_date
полей:
- 2016-12-31T00: 00: 00
- 2016-12-24T00: 00: 00
- 2016-12-17T00: 00: 00 (эта дата до даты 2016-12-23T00: 00: 00 и должны были быть возвращены)
Код
действия регистрируются как:
add_action('init', 'register_custom_post_types');
function register_custom_post_types() {
global $wp_post_types;
$post_type_name = 'almanac_entry';
if(isset($wp_post_types[ $post_type_name ])) {
$wp_post_types[$post_type_name]->show_in_rest = true;
$wp_post_types[$post_type_name]->rest_base = $post_type_name;
$wp_post_types[$post_type_name]->rest_controller_class = 'WP_REST_Posts_Controller';
}
}
add_action('rest_api_init', 'wp_rest_add_custom_fields');
function wp_rest_add_custom_fields() {
register_rest_field('almanac_entry', 'acf_almanac_date', array (
'get_callback' => function($object, $field_name, $request) {
return get_post_meta($object[ 'id' ], 'almanac_date', true) . "T00:00:00";
},
'update_callback' => null,
'schema' => null,
));
}
Любая помощь очень ценится.
Откровение 1
Мне пришло в голову, что, может быть, парам filter[date_query[column]]=acf_almanac_date
имеет WP-API для выполнения запросов поля acf_almanac_date
, который добавляется динамически в функции wp_rest_add_custom_fields
.
Возможно, мне нужно расширить WP_REST_Posts_Controller и переопределить функцию prepare_items_query
? Если true, как я могу соотнести это с полем ACF acf_almanac_date
? Oy vey!
Спасибо за помощь, Даниэль. Быстрый вопрос. Если у меня есть следующие 5 сообщений с almanac_date из '2016-12-31',' 2016-12-24', '2016-12-17',' 2016-12-10', '2016-12-03' и ударить по конечной точке: '/ wp-json/wp/v2/almanac_entry? almanac_date_after = 2016-12-20T00: 00: 00', я должен получить только 2 сообщения' 2016-12-31', '2016-12-24' , но я получаю все 5. Я знаю, что вы надумали WP 4.7. Может быть, я не запустил это (я должен буду смотреть), или, может быть, мне не хватает парам? :( –
Я запускаю версию 4.6.1. Может быть, мне нужно обновить? Предполагая, что это проблема, так как вы явно вызываете 4.7, и это не значит, что я использую плагин WP REST API Version 2.0-beta15. –
WordPress 4.7 выйдет 6 декабря. Вы можете использовать плагин Beta Tester для обновления к кандидату на выпуск сейчас https://wordpress.org/plugins/wordpress-beta-tester/ –