tohokuaikiのチラシの裏

技術的ネタとか。

WordPressのXML-RPCでマルチブログにしている際にblog_idを使用しても意味が無い件

WordPressXML-RPCはマルチブログを考慮していない(3.5でもソース見る限りそうっぽい)。

下記のファイルをプラグインにしてしまって対応。
とりあえず、カテゴリー作るときだけほしかったのでcase "wp.newCategory":だけ。

<?php
add_action('xmlrpc_call',    'junoe_generic_xmlrpc_call');
/**
 * @brief XML-RPCをcallする前のAction
 * @param 
 * @retval
 */
function junoe_generic_xmlrpc_call($method)
{
    global $HTTP_RAW_POST_DATA;
    if (empty($HTTP_RAW_POST_DATA)) {
        // workaround for a bug in PHP 5.2.2 - http://bugs.php.net/bug.php?id=41293
        $data = file_get_contents('php://input');
    } else {
        $data =& $HTTP_RAW_POST_DATA;
    }
    $message = new IXR_Message($data);
    $message->parse();
    $params = $message->params;
    
    switch ($method){
      case "wp.newCategory":
        if (is_multisite()) {
            $blog_id = $params[0];
            switch_to_blog($blog_id);
            break;
        }
    }
}