Как веб-разработчик, вы, вероятно, знакомы с Node.js и WordPress. Node.js — это мощная среда выполнения, которая запускает JavaScript вне браузера, а WordPress — ведущая система управления контентом (CMS).
Эти платформы могут показаться совершенно разными — Node.js с его основой JavaScript и WordPress, CMS на базе PHP. Однако они могут работать в тандеме благодаря WordPress REST API. Этот API позволяет приложениям Node.js взаимодействовать с WordPress посредством HTTP-запросов. Он обеспечивает доступ к различным данным, включая пользователей, комментарии, страницы, публикации и другие элементы сайта.
Но какая польза от объединения Node.js и WordPress?
Представьте, что у вас есть сайт WordPress и вы хотите создать собственную панель управления. Эта панель мониторинга может отображать данные с вашего сайта в режиме реального времени, такие как последние публикации, количество комментариев и активность пользователей.
Здесь Node.js играет решающую роль. В этом руководстве вы узнаете, как настроить конечные точки Node.js. Эти конечные точки используют WordPress REST API для различных задач: обновления сообщений, модерации комментариев, настройки сайта и индивидуального администрирования сайта WordPress.
Предварительные условия
Чтобы следовать этому руководству, мы предполагаем, что у вас есть:
- Базовые знания Node.js.
- Node.js и npm установлены на вашем компьютере.
- Установлены WordPress и расширение Thunder Client VS Code.
Управляйте публикациями WordPress с помощью Node.js
В WordPress основные задачи включают создание, обновление и удаление записей. В этом разделе объясняется, как создавать определенные конечные точки для этих действий, а также как отправлять запросы к /posts
конечная точка для каждой операции.
Создание новой записи в WordPress
Чтобы создать новую публикацию в WordPress с помощью REST API, отправьте POST-запрос к /posts
конечная точка. В теле запроса вам необходимо предоставить содержимое вашего поста WordPress в формате JSON.
Сначала откройте файл сервера Node.js, обычно называемый Приложение.js. Убедитесь, что Express правильно настроен в файле вашего сервера. Обычно это делается с помощью строки const app = express()
который инициализирует Express.
Затем реализуйте маршрут в файле вашего сервера для добавления нового сообщения. Код этого маршрута выглядит следующим образом:
app.post("/add-post", async (req, res) => {
try {
const postID = req.body.id
const resp = await axios.post(`https://yourdomain.com/wp-json/wp/v2/posts/${postID}`, req.body)
if(resp.status !== 200) throw "Something went wrong"
} catch (err) {
console.log(err)
}
})
Этот код создает конечную точку /add-post
в вашем приложении. Когда запрос отправляется в эту конечную точку, он извлекает идентификатор публикации из тела запроса и отправляет запрос POST на ваш сайт WordPress. Не забудьте заменить https://yourdomain.com
с вашим доменом WordPress.
Вы можете проверить это с помощью таких инструментов, как Thunder Client в Visual Studio Code. Убедитесь, что тело JSON вашего запроса допустимо, чтобы избежать ошибок.
Этот подход позволяет эффективно и автоматически публиковать сообщения на вашем сайте WordPress из вашего приложения.
Обновление существующей записи в WordPress
Чтобы обновить публикацию с помощью API WordPress, отправьте запрос PUT к /posts
конечная точка в вашем WordPress API. Вам также необходимо предоставить обновленное содержимое вашего сообщения WordPress в формате JSON.
Путь обновления существующей записи в WordPress следующий:
app.put("/update-post", async (req, res) => {
try {
const postID = req.body.id
const resp = await axios.put(`https://yourdomain.com/wp-json/wp/v2/posts/${postID}`, req.body)
if(resp.status !== 200) throw "Something went wrong"
} catch (err) {
console.log(err)
}
})
Например, вы можете обновить публикацию с идентификатором 3
в WordPress со следующим запросом в Thunder Client:
Удаление записи в WordPress
Чтобы удалить сообщение в WordPress, отправьте запрос DELETE на адрес /posts
конечная точка, используя уникальный идентификатор сообщения, которое вы хотите удалить.
app.delete("/delete-post", async (req, res) => {
try {
const postID = req.body.id
const resp = await axios.delete(`https://yourdomain.com/wp-json/wp/v2/posts/${postID}`)
if(resp.status !== 200) throw "Something went wrong"
} catch (err) {
console.log(err)
}
})
Результат должен выглядеть так:
Модерирование комментариев WordPress с помощью Node.js
API комментариев позволяет вам получать доступ к комментариям на вашем сайте WordPress и управлять ими из приложения. В рамках этого API есть конечная точка для создания, просмотра, чтения, обновления и удаления комментариев на сайте WordPress.
Предположим, вы не хотите, чтобы на вашем сайте WordPress публиковались комментарии с фразой «Следуй за мной». В этом примере вы можете использовать regex
выражение для проверки каждого комментария на наличие этой фразы перед его публикацией.
Для этого используйте следующий код:
app.post("/add-comment", async (req, res) => {
try {
let regex = /follow me/i;
let comment = req.body.comment
if(regex.test(comment)) throw "Oops! Contains the forbidden word"
const resp = await axios.post(`https://yourdomain/wp-json/wp/v2/comments`, req.body)
if(resp.status !== 200) throw "Something went wrong"
} catch (err) {
console.log(err)
}
})
При этом маршруте на веб-сайте публикуются только комментарии, не содержащие фразы «Следуй за мной», а комментарии, подобные приведенному ниже, не публикуются:
Настройка сайтов для пользователей
Сохраняя настройки пользователей и определяя их страну, вы можете настроить свои страницы WordPress для каждого пользователя.
В Node.js вы можете хранить пользовательские данные в файлах cookie при входе или регистрации вашего серверного приложения и размещать файлы cookie в их веб-браузере, например:
app.post("/sign-up", async (req, res) => {
// Sign up user
res.cookie("cookie_id", 123456)
res.cookie("lang", req.body.language)
res.status(200).json("Logged in.")
})
После регистрации вы получаете предпочтительный язык пользователя и отправляете его в браузер в виде файлов cookie вместе с cookie_id
.
Теперь, когда язык сохранен в браузере, вы можете использовать его для получения сообщений WordPress на языке пользователя. Для этого вам необходимо сначала перевести свои сообщения в WordPress. Самый простой способ сделать это — интегрировать WPML и Yoast SEO в ваш сайт WordPress.
После интеграции для других языков создаются разные подпапки:
- mydomain.com/en/
- мойдомен.com/es/
- mydomain.com/fr/
При получении сообщений WordPress вы можете получить список сообщений на предпочитаемом пользователем языке, поскольку он хранится в файлах cookie.
app.get("/get-posts", async (req, res) => {
try {
const lang = req.cookies.lang
const resp = await axios.get(`https://mydomain.com/${lang}/wp-json/wp/v1/posts`)
if(resp.status !== 200) throw "Something went wrong"
} catch (err) {
console.log(err)
}
})
Сделав это, вы получите список сообщений на основе языка, указанного пользователем при регистрации.
Использование индивидуального администрирования
Расширив конечную точку пользователя, вы можете создать собственную панель администрирования для управления пользователями, ролями и разрешениями WordPress. Users API позволяет вам получать доступ к пользовательской информации на вашем сайте WordPress и манипулировать ею из приложения, которое функционирует как Comment API.
Например, если вы хотите обновить роль пользователя до «Администратора», вы можете использовать следующий маршрут:
app.put("/update-user", async (req, res) => {
try {
const userID = req.body.id
const resp = await axios.put(`https://yourdomain/wp-json/wp/v2/users/${userID}`, req.body)
if(resp.status !== 200) throw "Something went wrong"
} catch (err) {
console.log(err)
}
})
В запросе передайте объект, содержащий идентификатор пользователя, запись которого вы хотите обновить, а также новые сведения.
Когда вы закончите разработку сервера Node.js. Вы всегда можете легко разместить его на хостинге приложений Kinsta.
Краткое содержание
Интеграция Node.js с вашим сайтом WordPress открывает возможности для большей функциональности. Вы можете обновлять сообщения, модерировать комментарии, устанавливать роли пользователей и добавлять настройки в зависимости от страны вашего пользователя.
Помимо функций, которые мы уже рассмотрели, вы можете добавить расширенный поиск, манипулирование темами и редакцию публикаций. Не стесняйтесь ознакомиться с Руководством по REST API и начать изучение.
Что вы думаете о REST API WordPress? Вы использовали его для некоторых своих проектов? Расскажите нам в разделе комментариев ниже!