- 2010/06/07 9:31 PM
- WordPress
サイト構築をWordPress一本で作り直すのに加えて、外部のWebサービスからの自動投稿機能を活用してなんとなくフワフワとネットへ流してしまっている活動記録もブログのエントリーとしてまとめて残す仕組みを取り入れてみることに。具体的に言うとFlickr経由の写真投稿だったりdeliciousの1日分のブクマをコメント付きで残したりするのに使いたいとかそんなところです。
ところが、自動投稿機能の大半は最低限投稿に足る項目(タイトル、本文)くらいしか設定できないので、このままだと自動投稿したエントリーを手修正するか、標準の投稿カテゴリ設定を使って1つのカテゴリに延々投稿するといったなんか非常に残念な感じのものになってしまうので悲しくなりました。
ということで、色々ネット上の文献もググって読んでみたけど情報が若干古くて対応できなかったりとかもやもやしたのでWordPress2.9.2で自動投稿経由のエントリーに任意のカテゴリやタグを付ける方法をまとめておこうと思います。
解決法:投稿ユーザー毎に任意のカテゴリ・タグを付ける仕組みをxmlrpc.phpに付け加える。
WordPressのプラグインとか外部Webサービス側でセッティングができればいうことないのですが、調べた範囲では期待できない感じだったので、コードの書き換えで解決させることにしました。
ということで、万人におすすめできる方法じゃありませんが、うまく行けばとても楽チンな感じになります。
その1 自動投稿用のユーザーを登録する
WordPressは複数の投稿ユーザーの設定が可能なのでこの機能を使って自動投稿用のユーザーを設定します。自分の環境ではdelicious、Flickr、LoudTwitterの3つのユーザーを作成しています。
現バージョンのWordPressでは新規ユーザーを登録するにはそれぞれに対して違うメールアドレスを設定しないといけないという便利なのかどうなのかよくわからない仕様となっているのでしかたなしにGmailのエイリアスを使ってメールアドレスを設定しましたヨ。
その2 xmlrpc.phpにコードを書き加える
WordPressをインストールしたディレクトリの直下にxmlrpc.phpというファイルがあります。このphpファイルの2210行目(WordPress2.9.2の場合)あたりにこんなコードがあります。
[php firstline=”2210″]
$catnames = $content_struct[‘categories’];
logIO(‘O’, ‘Post cats: ‘ . var_export($catnames,true));
$post_category = array();
[/php]
この次の行に以下のようなコードを書き加えます。
[php firstline=”2213″]
if ( strcmp( $username, ‘*投稿ユーザー名*’ ) == 0 ) {
$catnames[] = ‘*カテゴリ名*’;
$tags_input[] = ‘*タグ名*’;
$tags_input[] = ‘*タグ名*’;
}
[/php]
$catnames[]
と$tags_input[]
は付けたい分だけ増やせば複数カテゴリ・タグが設定されます。単純に投稿ユーザーの数だけこのif文を作っていけばそれぞれの投稿ユーザー毎にカテゴリ、タグを付けて投稿できるようになります。ね、泥臭いでしょ。(;´Д`)
ということで、ここまででxmlrpc経由で自動投稿させる場合に任意のカテゴリ・タグが投稿時に設定されるようになっていると思います。書き間違ったりすると非常に厄介なので慎重にやることをおすすめします。なにかあっても責任取れませんので・・。安全にやるならオリジナルファイルはバックアップをとってからチャレンジしてみることをおすすめします。
おまけ
自動投稿機能はサイトによって対応がマチマチなのでタイトルが自由につけられなかったり本文中になんかしら余計な文字列(書式設定とか)が入ったりすることがあると思います。そういう時は、今回作ったif文内で文字列処理をすると投稿に反映されます。タイトルを弄りたい場合は$post_title
を本文を弄りたい場合は$post_content
を操作すれば思い通りにでけます。