Вопрос или проблема
Это мой первый опыт работы с API WordPress, и я не разработчик PHP. В основном, наш клиент хотел, чтобы мы отображали статьи WordPress в нашем React-Native приложении с простыми данными, такими как:
- дата
- название
- содержимое
- миниатюра
- и т.д.
…всё, что вы найдете в стандартном ответе, и это было легко. Мы просто использовали стандартные конечные точки, такие как эта: https://demo.com/wp-json/wp/v2/posts?categories=1015
В любом случае… Теперь наш клиент хочет отображать “количество просмотров” каждой статьи. Однако я не могу найти эти данные в стандартном ответе:
Существует ли способ получить данные о количестве просмотров и вернуть их в ответе API, не настраивая каждую отдельную конечную точку?
Спасибо
Вам нужно написать логику для подсчета просмотров постов. После этого вы должны вызвать этот счетчик метаданных в REST API, используя приведенный ниже код API. Эта ссылка поможет получить ответ с количеством в REST API.
Ответ или решение
Чтобы добавить счетчик просмотров публикаций в ответ API WordPress, вам нужно будет выполнить несколько шагов, включая создание мета-поля для хранения количества просмотров и регистрацию этого поля в REST API. Вот подробное руководство по этому процессу.
Шаг 1: Создание мета-поля для хранения количества просмотров
- Добавьте код в файл вашей темы (обычно это
functions.php
) или создайте плагин, если хотите сохранить код отдельно.
function update_post_views($post_id) {
$count_key = 'post_views_count';
$count = get_post_meta($post_id, $count_key, true);
if ($count == '') {
$count = 0;
delete_post_meta($post_id, $count_key);
add_post_meta($post_id, $count_key, '0');
} else {
$count++;
update_post_meta($post_id, $count_key, $count);
}
}
function track_post_views($post_id) {
if (!is_single()) return;
if (empty($post_id)) {
global $post;
$post_id = $post->ID;
}
update_post_views($post_id);
}
add_action('wp_head', 'track_post_views');
Шаг 2: Регистрация мета-поля в REST API
После того как вы создали мета-поле для хранения количества просмотров, необходимо зарегистрировать это поле в REST API. Для этого добавьте следующий код также в файл functions.php
или в ваш плагин:
function register_views_count_field() {
register_rest_field('post',
'views',
array(
'get_callback' => 'get_post_views_count',
'update_callback' => null,
'schema' => null,
)
);
}
function get_post_views_count($object, $field_name, $request) {
return get_post_meta($object['id'], 'post_views_count', true);
}
add_action('rest_api_init', 'register_views_count_field');
Шаг 3: Использование API для получения количества просмотров
Теперь, когда вы зарегистрировали поле "views" в REST API, вы можете использовать конечную точку API, чтобы получить все ваши посты, включая количество просмотров. Запрос будет выглядеть так:
https://demo.com/wp-json/wp/v2/posts?categories=1015
В ответе на этот запрос теперь будет поле "views" в каждом элементе, которое содержит количество просмотров.
Примечание
- Убедитесь, что ваш сервер поддерживает обработку мета-данных и у вас есть права на модификацию файлов темы или плагинов.
- Помните, что при изменениях в
functions.php
могут возникать ошибки. Рекомендуется делать резервные копии или тестировать изменения на локальном сервере или в среде разработки. - Если у вас есть кэширование на уровне сервера или плагинов, убедитесь, что кэш очищается после внесения изменений в код, чтобы изменения вступили в силу.
Следуя этим шагам, ваша React Native приложение получит доступ к количеству просмотров постов, что позволит эффективно отображать эту информацию для клиентов.