Как веб-разработчик, вы, вероятно, знакомы с 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 вашего запроса допустимо, чтобы избежать ошибок.

Тело JSON запроса POST к конечной точке /add-post.

Этот подход позволяет эффективно и автоматически публиковать сообщения на вашем сайте 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:

Тело JSON запроса PUT к конечной точке /update-post
Тело JSON запроса PUT к конечной точке /update-post.

Удаление записи в 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)        
    }
})

Результат должен выглядеть так:

Тело JSON запроса DELETE к конечной точке /delete-post
Тело JSON запроса DELETE к конечной точке /delete-post.

Модерирование комментариев 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)
        
    }
})

При этом маршруте на веб-сайте публикуются только комментарии, не содержащие фразы «Следуй за мной», а комментарии, подобные приведенному ниже, не публикуются:

Тело JSON запроса POST к конечной точке /add-comment
Тело JSON запроса POST к конечной точке /add-comment, за исключением комментариев с надписью «Следуй за мной».

Настройка сайтов для пользователей

Сохраняя настройки пользователей и определяя их страну, вы можете настроить свои страницы 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)        
   }
})

В запросе передайте объект, содержащий идентификатор пользователя, запись которого вы хотите обновить, а также новые сведения.

Тело JSON запроса PUT к конечной точке /update-user
Текст JSON запроса PUT к конечной точке /update-user.

Когда вы закончите разработку сервера Node.js. Вы всегда можете легко разместить его на хостинге приложений Kinsta.

Краткое содержание

Интеграция Node.js с вашим сайтом WordPress открывает возможности для большей функциональности. Вы можете обновлять сообщения, модерировать комментарии, устанавливать роли пользователей и добавлять настройки в зависимости от страны вашего пользователя.

Помимо функций, которые мы уже рассмотрели, вы можете добавить расширенный поиск, манипулирование темами и редакцию публикаций. Не стесняйтесь ознакомиться с Руководством по REST API и начать изучение.

Что вы думаете о REST API WordPress? Вы использовали его для некоторых своих проектов? Расскажите нам в разделе комментариев ниже!