Follow along with the video below to see how to install our site as a web app on your home screen.
Примечание: This feature may not be available in some browsers.
<?php
require('class-IXR.php');
$domain = 'http://test.my'; //домен
$login = 'LOGIN';
$pass = 'PASS';
$title = 'TITLE';
$category = 'CATEGORY';
$client = new IXR_Client($domain.'/xmlrpc.php');
$content_struct['title'] = $title;
//Если надо сделать выдержку:
//$excerpt = 'EXCERPT';
//$after_excerpt = 'POST AFTER EXCERTP';
//$content_struct['description'] = $excerpt;
//$content_struct['mt_text_more'] = $after_excerpt;
//К черту выдержку(автоматом не будет формировать):
$content = 'CONTENT';
$content_struct['description'] = $content;
$content_struct['categories'] = array($category);
$client->query("metaWeblog.newPost", '0', $login, $pass, $content_struct, '1');
?>
<?php
//requires xmlrpc.inc from http://phpxmlrpc.sourceforge.net/
require_once('xmlrpc.inc');
$i = 0; // счетчик кеев
$accounts = file('accounts.txt'); //аки в формате логин:пароль:урл блога
$keywords = file('keywords.txt'); //кейворды, по 1 на строку
foreach($accounts as $string)
{
$urls = file('links.txt'); //урлы для линковки
$y = rand(0, count($urls)); //рандомный линк
$linka = $urls[$y];
$linka = str_replace("
", "", $linka);
$acc = explode(":", $string);
$domain1 = $acc[2]; //домен
$domain = str_replace("
", "", $domain1); // убираем переход на новую строку
$domain = $domain."/"; //добавляем в конец URL`а слэш, т.к. не все URLы идут с обратным слэшем на конце
$domain = str_replace("//", "/", $domain); // если в конце URLа получилось 2 слэша - меняем на 1.
$login = $acc[0];
$pass = $acc[1];
$category = 'Uncategorized';
$keywords[$i] = str_replace("
", "", $keywords[$i]); // убираем переход на новую строку
$keytitle = ucwords($keywords[$i]); // ключевое слово для заголовков
echo $keytitle;
echo "<br>";
$keyurl = str_replace(" ", "-", $keywords[$i]); //ключевое слово с разделителем "-" для URL`а RSS.
$posttext = 'Text';
$xmlrpcurl = "http://".$domain."xmlrpc.php";
$client = new xmlrpc_client($xmlrpcurl);
$params[] = new xmlrpcval("n/a");
$params[] = new xmlrpcval("n/a");
$params[] = new xmlrpcval($login); //your wordpress login
$params[] = new xmlrpcval($pass); //your wordpress password
$params[] = new xmlrpcval(
"<title>".$keytitle."</title>". //the title of your post
"$category". //the category
$posttext); //the body
$params[] = new xmlrpcval("true"); //publish now = true
$msg = new xmlrpcmsg("blogger.newPost",$params);
$response = $client->send($msg);
$i++;
echo "<br><br>Цикл $i выполнен<br><br>";
}
?>
Поковырялся - вот что соорудил, но осталась загвоздка.
Один раз данные отправляет, а дальше по циклу уже не хочет.
Вернее даже так - отправляет на сервер один и тот-же xmlrpc-запрос, т.е. если задать цикл из 3-х проходов, то он 3 раза отправит первые данные, а не будет брать вторые и третьи.
Не могу понять, в чём тут проблема.
Может где-то после отправки запроса надо кэш чистить, или обнулять что-то ?
Или ещё какое-то действие выполнить?
PHP:<?php //requires xmlrpc.inc from http://phpxmlrpc.sourceforge.net/ require_once('xmlrpc.inc'); $i = 0; // счетчик кеев $accounts = file('accounts.txt'); //аки в формате логин:пароль:урл блога $keywords = file('keywords.txt'); //кейворды, по 1 на строку foreach($accounts as $string) { $urls = file('links.txt'); //урлы для линковки $y = rand(0, count($urls)); //рандомный линк $linka = $urls[$y]; $linka = str_replace(" ", "", $linka); $acc = explode(":", $string); $domain1 = $acc[2]; //домен $domain = str_replace(" ", "", $domain1); // убираем переход на новую строку $domain = $domain."/"; //добавляем в конец URL`а слэш, т.к. не все URLы идут с обратным слэшем на конце $domain = str_replace("//", "/", $domain); // если в конце URLа получилось 2 слэша - меняем на 1. $login = $acc[0]; $pass = $acc[1]; $category = 'Uncategorized'; $keywords[$i] = str_replace(" ", "", $keywords[$i]); // убираем переход на новую строку $keytitle = ucwords($keywords[$i]); // ключевое слово для заголовков echo $keytitle; echo "<br>"; $keyurl = str_replace(" ", "-", $keywords[$i]); //ключевое слово с разделителем "-" для URL`а RSS. $posttext = 'Text'; $xmlrpcurl = "http://".$domain."xmlrpc.php"; $client = new xmlrpc_client($xmlrpcurl); $params[] = new xmlrpcval("n/a"); $params[] = new xmlrpcval("n/a"); $params[] = new xmlrpcval($login); //your wordpress login $params[] = new xmlrpcval($pass); //your wordpress password $params[] = new xmlrpcval( "<title>".$keytitle."</title>". //the title of your post "$category". //the category $posttext); //the body $params[] = new xmlrpcval("true"); //publish now = true $msg = new xmlrpcmsg("blogger.newPost",$params); $response = $client->send($msg); $i++; echo "<br><br>Цикл $i выполнен<br><br>"; } ?>
Сохранения ссылок пока не касаюсь - хотя бы постинг отладить.
По 1 - прекрасно постит.
В цикле foreach не хочет.
$msg = new xmlrpcmsg("blogger.newPost",$params);
$response = $client->send($msg);
$i++;
unset($params);
unset($client);
попробуй так
Код:$msg = new xmlrpcmsg("blogger.newPost",$params); $response = $client->send($msg); $i++; unset($params); unset($client);
...
$response = $client->send($msg);
if (!$response)
{
echo "Постинг прошёл неудачно<br>";
}
else
{
echo "Постинг прошёл удачно<br>";
}
...
if (!$result) {
print "<p>Could not connect to HTTP server.</p>";
} elseif ($result->faultCode()) {
print "<p>XML-RPC Fault #" . $result->faultCode() . ": " .
$result->faultString();
}
// Is the message a fault?
if ($this->message->messageType == 'fault') {
$this->error = new IXR_Error($this->message->faultCode, $this->message->faultString);
return false;
}
if($client->query("metaWeblog.newPost", '0', $login, $pass, $content_struct, '1'))
{
echo " --> Ok!\n";
}
else
{
echo " --> ERROR!\n";
}
при постинге проверять надо true/false.