Intereting Posts
скрыть / защитить оригинальные полноразмерные изображения Установить действующее состояние меню для пользовательского типа и категории, если заданный термин таксономии Как добавить несколько (но конкретных) сообщений в разные области на одной странице? Как я могу получить данные из базы данных, когда я получаю сообщение id от url в wordpress Добавить Slug Metabox в сообщения для авторов Проверьте, используется ли аватар по умолчанию Как удалить ссылки из функции «Получить список терминов»? Какой файл мне создать в моей теме WordPress, чтобы показать все сообщения, принадлежащие определенной категории? Скрипт Enqueue только при использовании бокового виджета Как отобразить отсортированные сообщения на странице «Все сообщения» Пакетная загрузка для создания сообщений, каждая с одним изображением, заголовком и основным текстом Разметка страниц не работает на некоторых страницах автора Изображения элементов списка идеально подходят для Chrome / Edge, css fudged on FF / IE Как применить патч? Номера галереи изображений для 3,5

Основные изменения WP REST API

Начиная с версии 4.7 WordPress плагин REST API объединился в ядро. Я замечаю следующие основные изменения:

  1. filter[key] = value больше не работает.
  2. ?taxonomy = slug не работает. Работает только по id.
  3. rest_query_vars больше не является фильтром.

Есть ли другие серьезные изменения? Как вы можете зарегистрировать гостевые запросы с новыми обновлениями? Можете ли вы запросить пул, а не идентификатор?

Начиная с WordPress 4.7 теперь у нас есть следующий фильтр для подключения к:

$args = apply_filters( "rest_{$this->post_type}_query", $args, $request );

Поэтому, если вы хотите выполнить запрос, например:

http://yoursite.com/wp-json/wp/v2/posts?meta_key=your_key&meta_value=your_value&per_page=10

ИЛИ

http://yoursite.com/wp-json/wp/v2/posts?meta_query[0][key]=your_key&meta_query[0][value]=your_value&per_page=10

вы можете сделать это через следующий фрагмент кода (в пределах вашего functions.php):

/** * This function will allow custom parameters within API request URL. * * @link https://codex.wordpress.org/Class_Reference/WP_Query * @see Wp-includes/Rest-api/Endpoints/Class-wp-rest-posts-controller.php * @param array $args Contains by default pre written params. * @param array $request Contains params values passed through URL request. * @return array $args New array with added custom params and its values. */ public function posts_allow_custom_request_params( $args, $request ) { $args += array( 'meta_key' => $request['meta_key'], 'meta_value' => $request['meta_value'], 'meta_query' => $request['meta_query'], ); return $args; } add_filter( 'rest_post_query', 'posts_allow_custom_request_params', 99, 2 );
/** * This function will allow custom parameters within API request URL. * * @link https://codex.wordpress.org/Class_Reference/WP_Query * @see Wp-includes/Rest-api/Endpoints/Class-wp-rest-posts-controller.php * @param array $args Contains by default pre written params. * @param array $request Contains params values passed through URL request. * @return array $args New array with added custom params and its values. */ public function posts_allow_custom_request_params( $args, $request ) { $args += array( 'meta_key' => $request['meta_key'], 'meta_value' => $request['meta_value'], 'meta_query' => $request['meta_query'], ); return $args; } add_filter( 'rest_post_query', 'posts_allow_custom_request_params', 99, 2 ); 

Обратите внимание, что я предполагаю, что вы запрашиваете сообщения из сообщения post post.

Вы можете добавить столько параметров, сколько хотите, если индексы вашего массива соответствуют правильным параметрам, принятым классом WP_Query . И если вы просмотрите мои комментарии по коду, вы можете найти что-то полезное для изучения.

Кстати, вот некоторые параметры, которые вы по умолчанию используете в своей строке запроса:

'author' => 'author__in', 'author_exclude' => 'author__not_in', 'exclude' => 'post__not_in', 'include' => 'post__in', 'menu_order' => 'menu_order', 'offset' => 'offset', 'order' => 'order', 'orderby' => 'orderby', 'page' => 'paged', 'parent' => 'post_parent__in', 'parent_exclude' => 'post_parent__not_in', 'search' => 's', 'slug' => 'post_name__in', 'status' => 'post_status', 'per_page' => 'posts_per_page',
'author' => 'author__in', 'author_exclude' => 'author__not_in', 'exclude' => 'post__not_in', 'include' => 'post__in', 'menu_order' => 'menu_order', 'offset' => 'offset', 'order' => 'order', 'orderby' => 'orderby', 'page' => 'paged', 'parent' => 'post_parent__in', 'parent_exclude' => 'post_parent__not_in', 'search' => 's', 'slug' => 'post_name__in', 'status' => 'post_status', 'per_page' => 'posts_per_page', 

Учитывая класс WP_Query, «страница» эквивалентна «paged», «статус» эквивалентен «post_status», и так далее …

Используя приведенные выше параметры, мы получим что-то вроде:

http://yoursite.com/wp-json/wp/v2/posts?offset=2&status=future

Надеюсь это поможет. И будьте оптимистами, полагая, что если они это сделают, это к лучшему, всегда!