Двач.hk прислал битые данные.
Вы видите копию треда, сохраненную 21 февраля 2022 года.
Можете попробовать обновить страницу, чтобы увидеть актуальную версию.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
31242134.JPG15 Кб, 204x259
Прошу помощи с XML 125885 В конец треда | Веб
Не получается разобраться самостоятельно.

Проблема:

Есть Wordpress(система управления контентом), в нем есть фишка удаленного наполнения которая называется XMLRPC, она работает при помощи XML-синтаксиса и несмотря на его простоту я не смог разобраться.

Вот код который отправляется post-запросом к движку Wordpress и он работает, он создает запись в блоге с указанными там данными, но тут отсуствует настройка, которая бы указывала ему в какую категорию ее нужно класть и найденные мной решения(они под кодом) либо неправильно мной применяются, либо вообще не работают.
<?xml version="1.0"?>
<methodCall>
<methodName>metaWeblog.newPost</methodName>
<params>
<param><value><array><data>
<value><int>0</int></value>
<value><string>LOGIN аккаунта</string></value>
<value><string>PASSWORD аккаунта </string></value>
<value><struct>
<member><name>title</name><value><string>Заголовок публикуемой записи(новости)</string></value></member>
<member><name>description</name><value><string>Основной текст публикуемой записи(новости)</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>Id изображения публикуемой записи(новости)</string></value></member>
<member><name>dateCreated</name><value><dateTime.iso8601>время и дата публикуемой записи(новости)</dateTime.iso8601></value></member>
</struct></value>
<value><boolean>1</boolean></value>
</data></array></value></param>
</params></methodCall>[/sup]
Есть вот такие решения и я не знаю как их правильно применить.
Вот такой фрагмент кода:
<member>
<name>categories</name>
<value>
<array>
<data>
<value>
<string>рубрика</string>
</value>
</data>
</array>
</value>

И какая-то инфа на английском по теме добавления категорий(рубрик), но я ничего не понял https://core.trac.wordpress.org/ticket/14868

</member>
2 125887
Тебе нужно использовать api правильно, для этого внимательно прочитай инструкции к api вот тут: https://codex.wordpress.org/XML-RPC_WordPress_API

Не знаешь английский - Гугл транслэйт в помощь. А вообще английский таки выучить придется если хочешь в АйТи, ибо все документации в первую очередь публикуются на нем и не всегда переводятся на другие языки.
3 125890
>>5887

>А вообще английский таки выучить придется если хочешь в АйТи, ибо все документации в первую очередь публикуются на нем и не всегда переводятся на другие языки.


Это печально т.к гуглтранслит очень плохо переводит.
4 125893
PHP знаешь? Или похожий язык.

Вот простенький пример как првератить твой хмл в обьект ,чтоб легче читалось\работать с ним.
Можещь запихнуть в онлайн компилятор
<?php

$string = <<<xml
<?xml version="1.0"?>
<document>
<methodCall>
<methodName>metaWeblog.newPost</methodName>
<params>
<param><value><array><data>
<value><int>0</int></value>
<value><string>LOGIN аккаунта</string></value>
<value><string>PASSWORD аккаунта </string></value>
<value><struct>
<member><name>title</name><value><string>Заголовок публикуемой записи(новости)</string></value></member>
<member><name>description</name><value><string>Основной текст публикуемой записи(новости)</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>Id изображения публикуемой записи(новости)</string></value></member>
<member><name>dateCreated</name><value><dateTime.iso8601>время и дата публикуемой записи(новости)</dateTime.iso8601></value></member>
</struct></value>
<value><boolean>1</boolean></value>
</data></array></value></param>
</params></methodCall>[/sup]
</document>
xml;

$xml = simplexml_load_string($string);

print_r($xml);
4 125893
PHP знаешь? Или похожий язык.

Вот простенький пример как првератить твой хмл в обьект ,чтоб легче читалось\работать с ним.
Можещь запихнуть в онлайн компилятор
<?php

$string = <<<xml
<?xml version="1.0"?>
<document>
<methodCall>
<methodName>metaWeblog.newPost</methodName>
<params>
<param><value><array><data>
<value><int>0</int></value>
<value><string>LOGIN аккаунта</string></value>
<value><string>PASSWORD аккаунта </string></value>
<value><struct>
<member><name>title</name><value><string>Заголовок публикуемой записи(новости)</string></value></member>
<member><name>description</name><value><string>Основной текст публикуемой записи(новости)</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>Id изображения публикуемой записи(новости)</string></value></member>
<member><name>dateCreated</name><value><dateTime.iso8601>время и дата публикуемой записи(новости)</dateTime.iso8601></value></member>
</struct></value>
<value><boolean>1</boolean></value>
</data></array></value></param>
</params></methodCall>[/sup]
</document>
xml;

$xml = simplexml_load_string($string);

print_r($xml);
5 125902
>>5893
не, это не поможет
6 125922
<?php
require_once("ixr.php"); // https://github.com/lsmonki/php-ixr или ее форк

$client = new IXR_Client('http://2chwordpress.com/xmlrpc.php');

$username = "abu";
$password = "mailruadmin";

$content = array(
'title' => 'Hello 2ch',
'description' => 'ya tyan prufov ne budet',
'mt_allow_comments' => 0, // 1 to allow comments
'mt_allow_pings' => 0, // 1 to allow trackbacks
'post_type' => 'post',
'categories' => array('13', '22')
//'custom_fields' => array($customfields),
//'mt_keywords'=>$keywords,
//'dateCreated' => $date
);
$client = new IXR_Client('http://yourwp.com/xmlrpc.php');
$params = array(0, $username, $password, $content, true); // Last parameter is 'true' which means post immediately, to save as draft set it as 'false'
if (!$client - > query('metaWeblog.newPost', $params)) {
echo('Something went wrong - '.$client - > getErrorCode().
' : '.$client - > getErrorMessage());
} else {
echo "Article Posted Successfully\n";
}
6 125922
<?php
require_once("ixr.php"); // https://github.com/lsmonki/php-ixr или ее форк

$client = new IXR_Client('http://2chwordpress.com/xmlrpc.php');

$username = "abu";
$password = "mailruadmin";

$content = array(
'title' => 'Hello 2ch',
'description' => 'ya tyan prufov ne budet',
'mt_allow_comments' => 0, // 1 to allow comments
'mt_allow_pings' => 0, // 1 to allow trackbacks
'post_type' => 'post',
'categories' => array('13', '22')
//'custom_fields' => array($customfields),
//'mt_keywords'=>$keywords,
//'dateCreated' => $date
);
$client = new IXR_Client('http://yourwp.com/xmlrpc.php');
$params = array(0, $username, $password, $content, true); // Last parameter is 'true' which means post immediately, to save as draft set it as 'false'
if (!$client - > query('metaWeblog.newPost', $params)) {
echo('Something went wrong - '.$client - > getErrorCode().
' : '.$client - > getErrorMessage());
} else {
echo "Article Posted Successfully\n";
}
7 125923
>>5922

первый $client конечно же не нужен, удали эту строку.
8 125924
>>5922
и запостилось почему-то вместо "->" как "- >", удали пробелы.

Еще не будет работать с https, как пофиксить - читай тут https://stackoverflow.com/a/32726403
9 125931
>>5922
А в кактегорих ID отправляется или название?
10 125932
>>5922
О, ты чет реальную тему подогнал похоже
11 125933
>>5924
спасибо
12 125934
>>5931
конечно id категорий.
Если что, вот пример который будет работать и с https тоже (надо указать путь до распакованного, можно нерабочего вордпресса для инклудов).
also см. https://wp-kama.ru/function/wp_xmlrpc_server::mw_newPost

<?php

include '/var/www/wordpress/wp-load.php';
require_once ABSPATH . WPINC . '/class-IXR.php';
require_once ABSPATH . WPINC . '/class-wp-http-ixr-client.php';

$username = "admin";
$password = "porol";

$content = array(
'title' => 'Hello 2ch',
'description' => 'ya tyan prufov ne budet',
'mt_allow_comments' => 0, // 1 to allow comments
'mt_allow_pings' => 0, // 1 to allow trackbacks
'post_type' => 'post',
'categories' => array('13', '22')
//'custom_fields' => array($customfields),
//'mt_keywords'=>$keywords,
//'dateCreated' => $date
);
$client = new WP_HTTP_IXR_CLIENT('https://2ch.hk/xmlrpc.php'); (М)

$params = array(0, $username, $password, $content, true); // Last parameter is 'true' which means post immediately, to save as draft set it as 'false'
if (!$client -> query('metaWeblog.newPost', $params)) {
echo('Something went wrong - '.$client -> getErrorCode().
' : '.$client -> getErrorMessage());
} else {
echo "Article Posted Successfully\n";
}
12 125934
>>5931
конечно id категорий.
Если что, вот пример который будет работать и с https тоже (надо указать путь до распакованного, можно нерабочего вордпресса для инклудов).
also см. https://wp-kama.ru/function/wp_xmlrpc_server::mw_newPost

<?php

include '/var/www/wordpress/wp-load.php';
require_once ABSPATH . WPINC . '/class-IXR.php';
require_once ABSPATH . WPINC . '/class-wp-http-ixr-client.php';

$username = "admin";
$password = "porol";

$content = array(
'title' => 'Hello 2ch',
'description' => 'ya tyan prufov ne budet',
'mt_allow_comments' => 0, // 1 to allow comments
'mt_allow_pings' => 0, // 1 to allow trackbacks
'post_type' => 'post',
'categories' => array('13', '22')
//'custom_fields' => array($customfields),
//'mt_keywords'=>$keywords,
//'dateCreated' => $date
);
$client = new WP_HTTP_IXR_CLIENT('https://2ch.hk/xmlrpc.php'); (М)

$params = array(0, $username, $password, $content, true); // Last parameter is 'true' which means post immediately, to save as draft set it as 'false'
if (!$client -> query('metaWeblog.newPost', $params)) {
echo('Something went wrong - '.$client -> getErrorCode().
' : '.$client -> getErrorMessage());
} else {
echo "Article Posted Successfully\n";
}
Levi5.png783 Кб, 868x932
13 125938
Блять, двач такой двач. У русских есть такая черта - делать что-то, не задаваясь вопросом, а зачем это нужно. Прямой вопрос:

А ЗАЧЕМ ЗДЕСЬ ВООБЩЕ НУЖЕН XML?

Какой в этом смысл, почему не REST API? Почему не JSON? Время SOAP-ов прошло, если только ты настольный клиент на древних дельфях пишешь, тогда ладно. В противном случае не вижу смысла разводить цирк с XML'ями.
14 125984
>>5938
для XMLRPC- это фишка для удаленого постинга в вордперс. Просто берешь шаблон, отправляешь его Post-запросом и все.
EditorWindow.png191 Кб, 745x477
15 125988
>>5984
Я знаю, что это для удаленного постинга! Вопрос совсем в другом, какая конечная цель? Если удаленно публиковать статьи... так есть нормальные десктопные клиенты - MarsEdit, Open Live Writer, Blogo, Ulysses и т.д. Не надо жопу рвать, выдумывать XML-схемы.
16 126002
>>5988

>какая конечная цель?


есть плагин для майкрософт ворд, который позволяет из проги статьи писать и отправлять. Если человек привык в ворде работать, то ему проще будет так.
Обновить тред
Двач.hk прислал битые данные.
Вы видите копию треда, сохраненную 21 февраля 2022 года.
Можете попробовать обновить страницу, чтобы увидеть актуальную версию.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
« /web/В начало тредаВеб-версияНастройки
/a//b//mu//s//vg/Все доски