Wordpress Multisite - сообщения API возвращают пустой массив - PullRequest
0 голосов
/ 03 июля 2018

Я пытаюсь использовать WordPress настроенный как мультисайт. /posts URL возвращает хорошие сообщения, кроме одного сайта.

С одного сайта (site_id: 2), где сообщения действительно существуют, конечная точка /posts api возвращает пустой массив.

Другие конечные точки, такие как /media и /comments, возвращают json с данными, которые ссылаются на некоторые сообщения по идентификатору. Но такие конечные элементы, как /posts/{id}, где id - это сообщения, возвращают ошибку json с ошибкой:

{"code": "rest_post_invalid_id", "message": "Неверный идентификатор записи.", "Data": {"status": 404}}

Когда я звоню по номеру get_current_site() в том месте, где сработала вышеуказанная ошибка, он возвращает одинаковые данные для всех сайтов (для всех URL-адресов, связанных с каждым сайтом), но для (site_id: 1 или 3), как указано выше, список сообщений, генерируемых rest api, не пусто, проблема только с /posts для идентификатора сайта: 2.

Что можно проверить?

Есть ли какая-нибудь точка в wp, где я могу перехватить все SQL-запросы?

Ответы [ 2 ]

0 голосов
/ 04 июля 2018

Я сбрасываю или просто возвращаю запрос напрямую из функции wordpress get_posts. И запрос кажется действительно сработавшим и возвращает сообщение по id.

Но после возврата сообщения из get_posts функция get_post класса WP_REST_Posts_Controller проверяет, что ее поле post_type равно post_type возвращаемого сообщения. И если он не равен, он запускает упомянутую ошибку в вопросе.

Ошибка на самом деле не описывает проблему. На самом деле тип поста не равен типу поста контроллера.

На самом деле тип поста был не post, а page.

Поэтому необходимо переключиться на использование конечной точки отдыха с /posts на /pages.

0 голосов
/ 04 июля 2018

Вы можете перехватывать запросы WordPress SQL, используя следующее:

<?php echo $GLOBALS['wp_query']->request; ?>

Другой пример:

$customPosts = new WP_Query($yourArgs);
echo "Last SQL-Query: {$customPosts->request}";

Другой способ - использовать этот код файла functions.php по ссылке ниже.

Лучшая коллекция кода для вашего файла functions.php

...