Как использовать API для публикации постов на нескольких удаленных сайтах?

  • 6 сентября 2023 г. 3:56
Ответы на вопрос 3
Чтобы публиковать посты на нескольких удаленных сайтах, вам понадобится использовать API каждого сайта.

Для решения проблемы с появлением двух одинаковых постов на дочерних сайтах, вы можете добавить проверку, чтобы код выполнялся только на главном сайте. Например, вы можете использовать условие, чтобы код выполнялся только при определенном домене:

```python
import requests

main_site = "https://главный-сайт.com"
child_sites = ["https://дочерний-сайт1.com", "https://дочерний-сайт2.com"]

def publish_post(title, content):
    # Проверяем, является ли текущий домен главным сайтом
    if request.host == "главный-сайт.com":
        # Публикуем пост на главном сайте
        post_data = {
            "title": title,
            "content": content
        }
        response = requests.post(main_site + "/api/posts", data=post_data)

        # Публикуем пост на дочерних сайтах
        for child_site in child_sites:
            response = requests.post(child_site + "/api/posts", data=post_data)

publish_post("Заголовок", "Содержимое поста")
```

Чтобы передавать изображения в контенте на дочерний сайт и сохранять их в медиатеке, вы можете использовать функцию `post` с `files` параметром, который позволяет передавать файлы вместе с запросом.

```python
import requests

main_site = "https://главный-сайт.com"
child_sites = ["https://дочерний-сайт1.com", "https://дочерний-сайт2.com"]

def publish_post(title, content, image_path):
    # Проверяем, является ли текущий домен главным сайтом
    if request.host == "главный-сайт.com":
        # Публикуем пост на главном сайте
        post_data = {
            "title": title,
            "content": content
        }
        response = requests.post(main_site + "/api/posts", data=post_data)

        # Публикуем пост на дочерних сайтах
        for child_site in child_sites:
            # Открываем файл изображения
            with open(image_path, "rb") as image_file:
                files = {
                    "image": image_file
                }
                response = requests.post(child_site + "/api/posts", data=post_data, files=files)

publish_post("Заголовок", "Содержимое поста", "путь-к-изображению.jpg")
```

Обратите внимание, что в коде используются фиктивные URL и данные. Вам необходимо заменить их на соответствующие URL и данные ваших сайтов.
Чтобы отслеживать вставку и обновление постов, можно использовать хук wp_insert_post() из документации WordPress: https://developer.wordpress.org/reference/hooks/wp_insert_post/ 
 Для отправки запроса на API следует использовать POST-запрос.
Похожие вопросы