Metaweblog apiを使用するためのPHPクラスまたはリソースはありますか?このAPIを自分のcms(wpなど)に追加して、他のアプリケーションが簡単に投稿(または...)できるようにします
1 に答える
PHPでのMetaWeblogAPIhttp://www.xmlrpc.com/metaWeblogApiの実装。
現在使用している実装を開発するためのインスピレーションを得るためにリンクしたこのスクリプトを調べました。metaweblog APIの実装例として、以下のサンプルコードを自由に使用してください。ただし、最新のXMLRPCライブラリの使用を検討してください。サンプルコードに必要な元の「xmlrpc.php」ファイルの修正バージョンへのリンクを含めました。
サンプルコードが利用するxmlrpcライブラリは次のとおりです。PHP5.4で動作するように変更されたXMLRPCライブラリ-元々はKeithDevensによって作成されました。
packagistでパッケージをすばやく検索すると、PHP標準の観点からはるかに前向きな多くの優れたオプションも提供されます。ZendFramework2には、最小限の依存関係でプロジェクトで使用できるコンポーネントも含まれています(10個のパッケージ-フレームワーク全体ではありません)。このサンプルコードをそのまま使用し、新しい開発は最新のXMLRPCライブラリを使用して行うことを強くお勧めします。
最初のリンクが停止した場合に備えて、ここにサンプルコードを追加します。
<?php
/**
* Skeleton file for MetaWeblog API http://www.xmlrpc.com/metaWeblogApi in PHP
* Requires Keith Devens' XML-RPC Library http://keithdevens.com/software/xmlrpc and store it as xmlrpc.php in the same folder
* Written by Daniel Lorch, based heavily on Keith Deven's examples on the Blogger API.
*/
require_once dirname(__FILE__) . '/xmlrpc.php';
function metaWeblog_newPost($params) {
list($blogid, $username, $password, $struct, $publish) = $params;
$title = $struct['title'];
$description = $struct['description'];
// YOUR CODE:
$post_id = 0; // id of the post you just created
XMLRPC_response(XMLRPC_prepare((string)$post_id), WEBLOG_XMLRPC_USERAGENT);
}
function metaWeblog_editPost($params) {
list($postid, $username, $password, $struct, $publish) = $params;
// YOUR CODE:
$result = false; // whether or not the action succeeded
XMLRPC_response(XMLRPC_prepare((boolean)$result), WEBLOG_XMLRPC_USERAGENT);
}
function metaWeblog_getPost($params) {
list($postid, $username, $password) = $params;
$post = array();
// YOUR CODE:
$post['userId'] = '1';
$post['dateCreated'] = XMLRPC_convert_timestamp_to_iso8601(time());
$post['title'] = 'Replace me';
$post['content'] = 'Replace me, too';
$post['postid'] = '1';
XMLRPC_response(XMLRPC_prepare($post), WEBLOG_XMLRPC_USERAGENT);
}
function XMLRPC_method_not_found($methodName) {
XMLRPC_error("2", "The method you requested, '$methodName', was not found.", WEBLOG_XMLRPC_USERAGENT);
}
$xmlrpc_methods = array(
'metaWeblog.newPost' => 'metaWeblog_newPost',
'metaWeblog.editPost' => 'metaWeblog_editPost',
'metaWeblog.getPost' => 'metaWeblog_getPost'
);
$xmlrpc_request = XMLRPC_parse($HTTP_RAW_POST_DATA);
$methodName = XMLRPC_getMethodName($xmlrpc_request);
$params = XMLRPC_getParams($xmlrpc_request);
if(!isset($xmlrpc_methods[$methodName])) {
XMLRPC_method_not_found($methodName);
} else {
$xmlrpc_methods[$methodName]($params);
}