通过 XMLRPC 实现 WordPress 微信小程序发布文章

更新时间:2018-10-22 分类:小程序 浏览量:3410

通过 XML-RPC 功能实现 WordPress 远程发布内容

准确的说,这篇内容是通过 XML-RPC 功能实现 WordPress 远程发布帖子笔记。WordPress 官方 APP 也是通过 XML-RPC 功能实现发布文章,如果禁用 XML-RPC 功能,则 WordPress APP 是无法发布文章的。所以才有了通过 XML-RPC 来实现微信小程序发布内容的实践。

之前学习 Python 爬虫的时候,学习了通过 XMLRPC 自动发布文章到 WordPress。于是,最近在折腾 WordPress 微信小程序的时候,就想着如何通过 XML-RPC 实现小程序的发布文章,免去安装 JWT 身份认证插件及授权的问题。经过一番的搜索和折腾,终于实现了免安装 JWT 插件实现小程序发帖。现在提供一下初始成果,后期有时间完善再整合至 WordPress 连接微信小程序 API 增强插件,如果有兴趣的,可以先行动手折腾一下。

内容发布代码


/*
* https://codex.wordpress.org/XML-RPC_WordPress_API/Posts
* PHP 版 XMLRPC 远程发布内容至 WordPress
* Author : 艾码汇
* HomePage : www.imahui.com
*/
function wp_post_insert( $title, $body, $category, $user, $passwd ){
    $url = get_bloginfo('wpurl').'/xmlrpc.php';
    $content = array( 
        'post_title' => $title,
        'post_content' => $body,
        'post_type' => 'post', // 文章类型,默认 post;
        'post_status' => 'pending', // 发布状态
        'post_category' => array($category) // 分类id
    );
    $params = array(0,$user,$passwd,$content,true);
    $request = xmlrpc_encode_request("wp.newPost", $params, array('encoding' => 'UTF-8', 'escaping' => 'markup'));
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_POSTFIELDS, $request);
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_TIMEOUT, 1);
	curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: text/xml'));
    $results = curl_exec($ch);
    curl_close($ch);
	$data = simplexml_load_string($results);
    return $data;
}

图像上传代码


/*
* https://codex.wordpress.org/XML-RPC_WordPress_API/Media
* PHP 版 XMLRPC 远程发布内容至 WordPress
* Author : 艾码汇
* HomePage : www.imahui.com
*/
function wp_uploads_media( $file, $type, $user, $passwd ){
    $url = get_bloginfo('wpurl').'/xmlrpc.php';
    if($type == 'jpg' || $type == 'jpeg') {
	$extension = 'image/jpeg';
    } else if($type == 'png') {
		$extension = 'image/png';
    } else if($type == 'gif') {
		$extension = 'image/gif';
    } else {
		$extension = 'text/plain';
    }
    $image = date("Ymdhis").'.'.$type; 
    $content = array(
	'name'=>$image,
	'type'=>$extension,
	'bits'=>$file, // $file 必须是 base64 图像格式
	'overwrite'=>false
    );
    $params = array(0,$user,$passwd,$content);
    $request = xmlrpc_encode_request("wp.uploadFile", $params);
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_POSTFIELDS, $request);
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_TIMEOUT, 1);
    $results = curl_exec($ch);
    curl_close($ch);
	$data = simplexml_load_string($results);
    return $data;
}