[MovableType]XML-RPCで投稿する場合の"publish"パラメータが広く誤解されている件

XML-RPCでブログ記事を投稿するときにはmetaWeblog.newPostというメソッドを使います。
パラメータの5番目の項目で"publish"というフラグがあります。

ほとんどの日本語解説サイトでは"0:非公開, 1:公開"と解説されているのですがこれは間違いです。

XML-RPCを使ってMovableTypeに投稿する(PHP版)
Movable Type で使える XML-RPC API

正しくは、"0:再構築しない, 1:再構築する"です。
こちらの記事が正しいです。

[ThinkIT] 第2回:XML-RPCを利用したWeb API (1/2)

なぜこれに気づいたかというと、実行してみればわかります。
おまけに、MTのソースコード(XMLRPCServer.pm)を見ていたらコメントがありました。

MovableType5.12のXMLRPCServer.pm 356行目あたり。

    ## In 2.1 we changed the behavior of the $publish flag. Previously,
    ## it was used to determine the post status. That was a bad idea.
    ## So now entries added through XML-RPC are always set to publish,
    ## *unless* the user has set "NoPublishMeansDraft 1" in mt.cfg, which
    ## enables the old behavior.
(意訳)
バージョン2.1において、我々はこの'publish'フラグの挙動を変更しました。
以前は、このフラグは記事のステータスを決めるために使われていました。
しかしこれは悪いアイデアでした。
なので今はXRML-RPCから投稿された全ての記事は常に公開されます。
(ただし、mt.cfgで"NoPublishMeansDraft 1"に設定されている場合は古い挙動になります。)

私自身もこれまで間違った認識で間違った記事を書いてしまったので、全部直さないといけませんね。
失礼いたしました。

追記

既に同じ趣旨の記事を書いてる方がいらっしゃいました。
私の検索力が足りなかったようです。

MT XMLRPC metaWeblog.newPostのpublish属性
MTのmetaWeblog.newPost()にはまる
カテゴリ:

人気記事