今天就分享一个wordpress远程自动发布文章的源码。
首先你的博客程序必须有xmlrpc接口,一般wordpress是肯定有的。如果不确定,你打开你博客首页,看源码,header区有类似.com/xmlrpc" />,一般都是支持的。
wordpress默认是这样的:
其中: 就是api接口地址了。
源码如下,请自行进行相应更改:
$xmlrpcurl='.com/xmlrpc.php';
$blogid='1';
$username='admin';
$password='pass';
$postTitle='标题';
$postContent='正文内容';
require('class-IXR.php'); //
/wordpress/wp-includes/class-IXR.php
$client = new IXR_Client($xmlrpcurl);
$params=array(
'',
'blog_ID'=>$blogid,
'user_login'=>$username,
'user_pass'=>$password,
'post_content'=>'' . $postContent,
'publish'=>true
);
$params=array_values($params);
$client->query("blogger.newPost",$params);
$response=$client->getResponse();
if ($response['faultCode']==0){
print 'Success';
} else {
print 'Fail:' . $response['faultString'];
}
?>
//以下是用XML-RPC for
PHP库和metaWeblog接口发布文章的例子。要先下载phpxmlrpc库取出其中的xmlrpc.inc来用。
include("xmlrpc.inc"); //
这里要改成xmlrpc.inc所在的路径
$GLOBALS['xmlrpc_internalencoding'] = 'UTF-8';
define ('DOMAIN', 'blog.bluesky.cn'); // 博客的域名
define ('BLOGID', 1); // 博客ID,一般为1
define ('USER', 'admin'); // 博客登录的用户名
define ('PASSWORD', 'pass'); // 博客登录的密码
// 创建 xml-rpc client
$cl = new xmlrpc_client (
"/xmlrpc.php", DOMAIN, 80);
// 准备请求
$req = new xmlrpcmsg('metaWeblog.newPost');
// 逐个列出请求的参数:
$req->addParam ( new xmlrpcval ( BLOGID, 'int')); //
博客ID
$req->addParam ( new xmlrpcval ( USER, 'string' ));
// 用户名
$req->addParam ( new xmlrpcval ( PASSWORD, 'string'
)); // 密码
$struct = new xmlrpcval (
array (
"title" => new
xmlrpcval ( '标题', 'string' ), // 标题
"description" =>
new xmlrpcval ( '正文内容', 'string'), // 内容
), "struct"
);
$req->addParam ( $struct );
$req->addParam ( new xmlrpcval (1, 'int')); //
立即发布
// 发送请求
$ans = $cl->send($req);
var_dump ( $ans );
?>
//注意一定要加上:$GLOBALS['xmlrpc_internalencoding'] =
'UTF-8';这一句,否则不能正确处理中文。
//另一段也是用phpxmlrpc库和metaWeblog接口发表文章的例子代码,该代码使用了返回类型为“phpvals”,这样可以直接用返回结果的$r->val来获取文章ID号。
include("xmlrpc.inc");
$GLOBALS['xmlrpc_internalencoding'] = 'UTF-8';
$c = new
xmlrpc_client("/xmlrpc.php",
"", 80);
$content['title']="标题";
//标题
$content['description']="正文内容";
//内容
$content['mt_keywords']="标签1,标签2";
//标签
$content['wp_password']="";
//文章密码,输入后显示加密
$content['categories'] =
array("分类1","分类2");
//分类名
$x = new
xmlrpcmsg("metaWeblog.newPost",
array(php_xmlrpc_encode("1"),
//BLOG ID
php_xmlrpc_encode("admin"),
//用户名
php_xmlrpc_encode("pass"),
//密码
php_xmlrpc_encode($content),
php_xmlrpc_encode("1")));
//立即发表
$c->return_type = 'phpvals';
$r =$c->send($x);
if
($r->errno=="0")
echo
"发表成功,文章序号为:".$r->val;
else {
echo "出错了";
print_r($r);
}
?>
//以下是读取最新一篇文章的例子代码:
include("xmlrpc.inc");
$GLOBALS['xmlrpc_internalencoding'] = 'UTF-8';
$c = new
xmlrpc_client("/xmlrpc.php",
"blog.bluesky.cn", 80);
$msg = new xmlrpcmsg('metaWeblog.getRecentPosts',
array(php_xmlrpc_encode("1"),
php_xmlrpc_encode("admin"),
php_xmlrpc_encode("pass"),
php_xmlrpc_encode("1")) );
$res = $c->send($msg);
$val = $res->value();
$val->arraymem(0)->structreset();
while (list($key, $v) =
$val->arraymem(0)->structeach())
{
echo "Element: $key; Type:
".$v->kindOf().";
Value:".$v->scalarval()."\n";
}
?>
阅读(3331) | 评论(0) | 转发(0) |