Всем привет. Пишу на конкурс впервые.
Не так давно мне понадобилось наполнять свой сайт на вордпресс, по 500-1000 записей в сутки. Пробовал сначала наполнять с помощью Zennoposter браузером. (через админку) Все нормально работало, но уходило несколько часов на такое задание. А нужно было сделать наполнение хотябы за 10 минут.
Я стал искать различные способы наполнения без браузера. Пробовал сделать просто на запросах, но из-за недостаточных знаний у меня не получилось (программировать я совсем не умею и принципы работы программ тоже не совсем понимаю). Хорошо что у меня есть зеннопостер.

Я начал гуглить и узнал что у wordpress есть api xmlrpc.php. Я не нашел готовое решение на зеннопостер, а те что нашел не хотели работать у меня, либо переставали работать, когда я внедрял в них свои "костыли". Видел что везде пишут что с xmlrpc сложно работать напрямую и нужно работать через библиотеки.
Мне стало интересно, что же там такого сложного (думал может трафик шифруется или формат специфический) и стал снифать запросы. И каково же было мое удивление - все очень просто на самом деле.
Побыстрому я накидал простой шаблон на кубиках, почти без использования C# сниппетов.
Для создания записи на вордпресс с изображениями нам нужно сделать следующее:
Сначала изображение конвертируем в base64 с помощью C# сниппета.
Далее изображение загружаем на вордпресс таким запросом:
XML:
<?xml version="1.0"?>
<methodCall>
<methodName>wp.uploadFile</methodName>
<params>
<param><value><int>1</int></value></param>
<param><value><string>{-Variable.wp_login-}</string></value></param>
<param><value><string>{-Variable.wp_password-}</string></value></param>
<param><value><struct>
<member><name>name</name><value><string>{-Variable.img_name-}.jpg</string></value></member>
<member><name>type</name><value><string>image/jpg</string></value></member>
<member><name>bits</name><value><base64>
{-Variable.img_base_64-}
</base64></value></member>
<member><name>overwrite</name><value><boolean>1</boolean></value></member>
</struct></value></param>
</params></methodCall>
Отправляем POST запрос к файлу /xmlrpc.php
Как видно из кода, мы используем метод wp.uploadFile, передаем ему логин и пароль, название изображения и его base64 код.
И если мы все правильно сделали, то в ответ мы получаем id нашего изображения и прямые ссылки на него (в оригинальном размере и миниатюры). Парсим их регулярками.
Далее создадим пост на нашем сайте.
Для создания поста, нам нужно получить дату текущее время в формате 20180515T15:10:01. Время получаем стандартными средствами Zennoposter, а дату с помощью кода:
C#:
return DateTime.Now.ToString("yyyyMMddT");
Используем следующий код:
C#:
var content = project.Variables["description"].Value.Trim();
content = content.Replace("&","&").Replace("\"",""").Replace("\'","'").Replace("<","<").Replace(">",">");
return content;
Следующим запросом создаем пост:
XML:
<?xml version="1.0"?>
<methodCall>
<methodName>metaWeblog.newPost</methodName>
<params>
<param><value><array><data>
<value><int>0</int></value>
<value><string>{-Variable.wp_login-}</string></value>
<value><string>{-Variable.wp_password-}</string></value>
<value><struct>
<member><name>title</name><value><string>{-Variable.topic_name-}</string></value></member>
<member><name>description</name><value><string>
{-Variable.description-}</string></value></member>
<member><name>mt_allow_comments</name><value><int>0</int></value></member>
<member><name>mt_allow_pings</name><value><int>0</int></value></member>
<member><name>post_type</name><value><string>post</string></value></member>
<member><name>mt_keywords</name><value><string></string></value></member>
<member><name>custom_fields</name><value><array><data>
<value><string></string></value>
</data></array></value></member>
<member><name>wp_post_thumbnail</name><value><string>{-Variable.img_id-}</string></value></member>
<member><name>dateCreated</name><value><dateTime.iso8601>{-Variable.date-}{-Variable.time-}</dateTime.iso8601></value></member>
</struct></value>
<value><boolean>1</boolean></value>
</data></array></value></param>
</params></methodCall>
Как получить прямую ссылку на пост я не нашел, поэтому просто парсил ссылку на него с главной страницы.

Пример шаблона прилагается.
- Номер конкурса статей
- Девятый конкурс статей
- Тема статьи
- Другое




я тоже.... даже под твоим авторством, если память не изменяет.