Как в моем блоге на фрейсворке WordPress сделать добавление стати отправив заброс с некой страницы или какимто другим образом.
Добавление статей в WordPress из внешних источников или с других страниц сайта — задача довольно популярная. Есть три основных способа реализации, в зависимости от ваших навыков программирования и целей.
1. Использование WordPress REST API (Самый современный способ)
WordPress имеет встроенный интерфейс, который позволяет принимать данные (JSON) и создавать записи. Это лучший вариант, если вы хотите отправить запрос через JavaScript (fetch/axios) или с другого сервера.
Как это работает:
- Нужно авторизовать запрос (самый простой способ — плагин Application Passwords, встроенный в ядро WP).
- Отправить
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 блокирует анонимные запросы на создание контента. Нам нужно создать «пароль приложения».
- Зайдите в админку WP: Пользователи -> Профиль.
- Прокрутите вниз до раздела Пароли приложений.
- Введите любое имя (например, «My External App») и нажмите Добавить.
- Важно: Скопируйте появившийся пароль (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;
Что важно знать:
- Безопасность: Используйте этот метод только через HTTPS. Если ваш сайт работает на HTTP, пароль приложения будет передаваться в открытом виде.
- ID категорий: Чтобы узнать ID, зайдите в «Записи» -> «Рубрики» и наведите на название — ID будет виден в ссылке в браузере (параметр
tag_ID=...). - Изображения: Загрузка картинок через API — это отдельный процесс. Сначала нужно отправить файл в
/wp-json/wp/v2/media, получить его ID, а затем передать этот ID в полеfeatured_mediaпри создании статьи.
Хотите, я помогу составить запрос для прикрепления «Миниатюры» (главного изображения) к статье?