Перейти к содержимому

~🎯Как в блоге на фреймворке WordPress сделать добавление стати отправив запрос с некой страницы или каким-то другим образом?

Как в моем блоге на фрейсворке WordPress сделать добавление стати отправив заброс с некой страницы или какимто другим образом.

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


1. Использование WordPress REST API (Самый современный способ)

WordPress имеет встроенный интерфейс, который позволяет принимать данные (JSON) и создавать записи. Это лучший вариант, если вы хотите отправить запрос через JavaScript (fetch/axios) или с другого сервера.

Как это работает:

  1. Нужно авторизовать запрос (самый простой способ — плагин Application Passwords, встроенный в ядро WP).
  2. Отправить POST запрос на адрес: https://vash-sait.com/wp-json/wp/v2/posts.

Пример на JavaScript (для фронтенда):

JavaScript

const postData = {
  title: 'Заголовок моей статьи',
  content: 'Текст статьи здесь...',
  status: 'publish' // или 'draft', если нужен черновик
};

fetch('https://vash-sait.com/wp-json/wp/v2/posts', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': 'Basic ' + btoa('user:pass_из_настроек_профиля')
  },
  body: JSON.stringify(postData)
})
.then(response => response.json())
.then(data => console.log('Статья создана!', data));

2. Функция wp_insert_post (Если вы пишете PHP-код)

Если вы создаете кастомную страницу на том же сайте (например, форму в файле page-custom.php), используйте встроенную функцию WordPress.

Пример PHP-кода:

PHP

$new_post = array(
    'post_title'    => 'Заголовок новой статьи',
    'post_content'  => 'Контент, полученный из вашей формы.',
    'post_status'   => 'pending', // 'pending' отправит на модерацию
    'post_author'   => 1,
    'post_category' => array(1, 8)
);

$post_id = wp_insert_post($new_post);

if ($post_id) {
    echo "Статья успешно добавлена!";
}

3. Плагины для «Frontend Post Submission» (Без кода)

Если вы не хотите писать код, есть готовые решения, которые позволяют пользователям (или вам) отправлять статьи прямо с лицевой части сайта.

  • WP User Frontend: Создает форму на странице сайта, через которую можно опубликовать статью.
  • Gravity Forms / WPForms: Позволяют создавать продвинутые формы, данные из которых автоматически превращаются в записи (Post Submission Add-on).
  • Contact Form 7 + Post My CF7 Form: Бесплатная связка для создания постов из обычной формы контактов.

4. Публикация через Email (Забытый метод)

В WordPress «из коробки» есть функция «Публикация через e-mail» (Настройки -> Написание). Вы создаете секретный почтовый ящик, и любое письмо, пришедшее на него, автоматически становится статьей в блоге.


Какой способ выбрать?

ЗадачаРекомендация
Нужно отправлять данные с другого сайта/приложенияREST API
Нужно сделать форму для гостей на своем сайтеWP User Frontend
Вы пишете свой плагин или темуwp_insert_post()
Нужно максимально быстро без программированияПлагины форм

Хотите, я помогу составить структуру JSON-запроса для REST API или подготовлю более подробный PHP-скрипт для вашей задачи?



«структуру JSON-запроса для REST API» — давай реализуем последовательно такое решение.

Реализация публикации через REST API — это профессиональный и гибкий подход. Мы разделим процесс на три этапа: подготовка WordPress, формирование структуры данных и сам запрос.


Этап 1: Подготовка WordPress

По умолчанию WordPress блокирует анонимные запросы на создание контента. Нам нужно создать «пароль приложения».

  1. Зайдите в админку WP: Пользователи -> Профиль.
  2. Прокрутите вниз до раздела Пароли приложений.
  3. Введите любое имя (например, «My External App») и нажмите Добавить.
  4. Важно: Скопируйте появившийся пароль (16 символов). Больше он не покажется.

Этап 2: Структура JSON-запроса

WordPress ожидает данные в формате JSON. Ниже приведены основные поля, которые вы можете передать.

JSON

{
  "title": "Заголовок вашей статьи",
  "content": "Основной текст статьи. Можно использовать для отсечки анонса.",
  "excerpt": "Краткое описание (отрывок), если нужно.",
  "status": "publish",
  "categories": [1, 5],
  "tags": [10, 12],
  "format": "standard",
  "meta": {
    "custom_field_key": "значение_произвольного_поля"
  }
}

Разбор ключевых полей:

  • status: publish (опубликовать сразу), draft (черновик) или pending (на модерацию).
  • categories/tags: Массивы с ID (числами), а не именами категорий.
  • content: Поддерживает HTML-теги.

Этап 3: Практическая реализация (PHP или JS)

Для отправки запроса нам нужно использовать заголовок Authorization в формате Basic Auth. Это строка: Base64(логин:пароль_приложения).

Вариант на PHP (например, для другого сайта)

PHP


$url = 'https://vash-sait.com/wp-json/wp/v2/posts';
$username = 'admin'; // Ваш логин
$password = 'abcd efgh ijkl mnop'; // Пароль приложения

$data = [
    'title'   => 'Пост через API',
    'content' => 'Содержимое статьи...',
    'status'  => 'publish'
];

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Content-Type: application/json',
    'Authorization: Basic ' . base64_encode("$username:$password")
]);

$response = curl_exec($ch);
curl_close($ch);

echo $response;

Что важно знать:

  1. Безопасность: Используйте этот метод только через HTTPS. Если ваш сайт работает на HTTP, пароль приложения будет передаваться в открытом виде.
  2. ID категорий: Чтобы узнать ID, зайдите в «Записи» -> «Рубрики» и наведите на название — ID будет виден в ссылке в браузере (параметр tag_ID=...).
  3. Изображения: Загрузка картинок через API — это отдельный процесс. Сначала нужно отправить файл в /wp-json/wp/v2/media, получить его ID, а затем передать этот ID в поле featured_media при создании статьи.

Хотите, я помогу составить запрос для прикрепления «Миниатюры» (главного изображения) к статье?