Home > WordPress Archive
WordPress Archive
Twitpress を twicco に力業で対応させてみる
- 2008-11-05 (水)
- WordPress
Twitter の日本語版向けサービスとして立ち上がった、twicco は特定の話題を扱うコミュニティを作ることができるサービス。
さっそく私も興味があるところに登録してみました。
で、それに関連する話題をブログにポストしたときに、コミュニティ向けに reply してやれると便利じゃね? と短絡的に考えた結果、またしても Twitpress をちょっとだけカスタマイズしてみました。
具体的な動作は、指定したカテゴリに属するポストがされたとき、指定したコミュニティ宛に reply 用の文字列 @~ を付けてやるという単純なものです。
既存のソースに数行追加するだけの簡単なものなので、ご参考までに。
Twitpress 日本語版
- 2008-10-28 (火)
- WordPress
WordPress の更新を Twitter へ通知する プラグイン Twitpress 0.3.2 の日本語版です。
設定画面で出力されるメッセージを日本語化し、以下のカスタマイズを行っています。
- ページの更新を通知しない(ソース書き換えでオリジナルの動作に戻せます)
- パーマリンクが正しく送信されない不具合への対応(詳細)
ダウンロードして展開してできた twitpress.php をプラグインディレクトリに設置し、有効化してください。
WordPress 2.6.3 + 日本語リソース 環境下で動作確認を行っています。
- Twitpress 0.3.2 日本語版 (27)
Update:2008/10/28
Twitpress の通知 URL にパーマリンクをちゃんと使いたい
- 2008-10-26 (日)
- WordPress
WordPress 2.3 でカノニカル URL が導入されたのが原因か判断付かないのですが、Twitpress の Message format を、
更新したよ! : [title] [permalink]*Twitpress*
のようにしても、パーマリンクが通知されない状況が続いていました。別に、ちゃんとリダイレクトされるので問題ないなあと思ってたんですが、Twitter でそれに困ってるつぶやきを見かけたので、ソースを追ってみました。で、多分これで解決。
$ diff -u twitpress.php.org twitpress.php
--- twitpress.php.org 2008-10-26 10:29:45.000000000 +0900
+++ twitpress.php 2008-10-26 10:13:21.000000000 +0900
@@ -246,7 +246,8 @@
$proto = get_option( 'twitpress_message' );
$post = get_post( $postID );
$proto = str_replace( "[title]", $post->post_title, $proto );
- $proto = str_replace( "[permalink]", $post->guid, $proto );
+ //$proto = str_replace( "[permalink]", $post->guid, $proto );
+ $proto = str_replace( "[permalink]", get_permalink($postID), $proto );
$proto = str_replace( "[link]", get_option( 'home' )."?p=".$postID, $proto );
return $proto;
}[permalink] で置換されるURLはデータベース内の wp_posts テーブルの guid フィールドを参照しているのですが、これは更新したときもパーマリンクが格納されるのじゃなくて、カノニカルURL 用のパラメータが格納されている雰囲気。なので、その値を使わずに、get_permalinkを使い、パラメータに $postID を指定することで、投稿記事のパーマリンクを取得、投稿するようにしています。
まぁ、この記事がテスト投稿なんですが、ちゃんと通知されてますでしょうか?
ページを更新したときは通知したくない
twitpress.php の関数 twitpress_run を書き換えて、$post_type が post の時のみ通知を行うように変更してみました。
//Runs when a post record is inserted into the database
function twitpress_run( $postID ) {
//get the post
$post = get_post( $postID );
//get the post type(page or post)
$post_type = get_post_type( $postID );
//we only want to do anything if the post was not previously twittered
if ( !twitpress_was_twittered( $postID ) && ( $post_type === "post") ){
//Update the post to reflect it's current status
twitpress_db_update_post( $postID, $post->post_status );
}
//process the posts, including twittering newly published posts
if ( $post_type === "post" ){
twitpress_process_posts();
}
}ページを作成したときにTwitterへポストされるのがイヤな場合は、このような書き換えで回避できそうです。
WordPress の更新内容を mixi へ投稿するスクリプト RSS2mixi with MagpieRSS
- 2008-10-03 (金)
- WordPress
ブログのエントリーをmixi日記に自動投稿する「RSS2mixi」 ::: creazy photograph で配布されているスクリプト RSS2mixi をちょっと改造して本文から画像データを抜き出せるようにしてみました。
元スクリプトでは description を見ているためか、WordPress の吐く RSS では画像を使っていても、そこまでスクリプトが読んでくれないので*1 どうにかこうにかしてみようとしたのが、MagpieRSS を用いて RSS をパースするという方法。
他ライブラリを使うのでシンプルではなくなるのですが、もともと便利なスクリプトだし、どうせ自前のサーバで動かすので、ちょっと富豪的にしてみました。
元スクリプトは PHP5 の SimpleXML を使っていますが、その部分を MagpieRSS にお任せしているので、PHP4 でも動くかもしれませんね。
MagpieRSS 導入方法
MagpieRSS のファイル群は RSS2mixi と同じ場所に magpierss というディレクトリを作成して保存してあります。
rss_fetch.inc を直接書き換え MAGPIE_OUTPUT_ENCODING の値を ‘UTF-8′ にしてあります。
その他、環境に応じてキャッシュディレクトリなどの書き換えを行います。
RSS2mixi の使い方
設定はスクリプト自体を書き換え、フィードの URL や mixi へのログイン情報、ID などを記入します。
$posted_file および $img_tmp_file で指定するファイルは、予め作成しておくのが良いようです。
設定が完了したら cron で定期的にスクリプトを実行すれば、新規に投稿されたエントリの内容を mixi に複製してくれるはずです。
ソースコード
/** * RSS2mixi with MagpieRSS * * RSS読み込んでmixi日記に自動投稿します。 * * original script @author yager <yager[ at ]creazy.net> * http://creazy.net/2008/08/rss2mixi_php.html * * custmized by yuuichi <u1 [ at ] u-1.net> */ mb_language("japanese"); mb_internal_encoding("UTF-8"); require_once 'Services/MixiAPI/Diary.php'; require_once 'Services/MixiAPI/Image.php'; require_once 'Services/MixiAPI/Factory.php'; require_once './magpierss/rss_fetch.inc'; error_reporting(E_ALL); //------------------------------------------------------------ // Settings //------------------------------------------------------------ /** * RSS設定 */ $rss = ''; //ブログのRSS /** * mixi設定 */ $user = ''; //ログインID $pass = ''; //パスワード $id = ''; //mixi ID /** * 送信済みエントリーをストアしておくためのデータファイル * @memo 別のファイル名で設置した場合はここを修正してください。 * 書き込み権限を与えておく事を忘れずに。 * chmod 666 {データファイル名} */ $posted_file = './rss2mixi.link.database.txt'; $img_tmp_file = './rss2mixi_tmp_file.jpg'; //------------------------------------------------------------ // Get data //------------------------------------------------------------ // 登校済みのURLのデータファイルを読み込み $posted_links = explode("\n",file_get_contents($posted_file)); // MagpieRSSによるRSSの展開 $root_ = fetch_rss($rss); $title = $root_->channel['title']; $items_ = array(); foreach ( $root_->items as $item ) { $items_[] = $item; } rsort($items_); //------------------------------------------------------------ // Post mixi //------------------------------------------------------------ foreach ( $items_ as $item ) { // すでにポスト済みの記事はスキップ if ( in_array($item['link'],$posted_links) ) continue; $title = $item['title']; $title = "ブログを更新しました : ".$title; $link = $item['link']; $description = $item['description']; $fulltext = $item['content']['encoded']; // 添付画像URL取得 $matches = array(); if ( preg_match('/<img.*?src=[\'\"](.*.jpg)[\'\"].*?>/i',$fulltext,$matches) ) { // JPEGのIMGタグがあったら添付画像として $photo_url = $matches[1]; echo $photo_url . "<br />\n"; } // 本文の成形 $description = preg_replace( // 画像タグはカメラアイコン+URL '/<img.*?src=[\'\"](.*?)[\'\"].*?>/ie' ,"'([m:133]$1)'" ,$description ); $description = preg_replace( // リンクタグはPCアイコン+TinyURL '/<a.*?href=[\'\"](.*?)[\'\"].*?>(.*?)<\/a>/ie' ,"'([m:196]$2:'.tinyurl('$1').')'" ,$description ); $description = strip_tags($description); $description = $description."\n\n".$link; // debug echo $title . "<br />\n"; echo $link . "<br />\n"; echo "<pre>".$description."</pre><hr />\n"; // mixiにポスト $diary = new Services_MixiAPI_Diary($title, $description); if ( $photo_url ) { if ( $fp = fopen($img_tmp_file,"w") ) { fwrite($fp,file_get_contents($photo_url)); fclose($fp); } $diary->setImage(new Services_MixiAPI_Image($img_tmp_file)); } $service = Services_MixiAPI_Factory::getInstance( Services_MixiAPI_Factory::API_MODE_POSTDIARY, $user, $pass, $id); $service->setDiary($diary); $service->execute(); // ポスト済みに登録 if ( $fp = fopen($posted_file,"a") ) { fwrite($fp,$item['link']."\n"); fclose($fp); } } /** * TinyURL変換関数 * @param String $url 変換したいURL * @return String 変換後のTinyURL */ function tinyurl($url) { $tiny = file_get_contents('http://tinyurl.com/api-create.php?url='.urlencode($url)); return $tiny; }
参考リンク
以下のURLを参考にスクリプトを改造させていただきました。感謝。
- ブログのエントリーをmixi日記に自動投稿する「RSS2mixi」 ::: creazy photograph
- MagpieRSS - PHP で使える RSS パーサー。
- MagpieRSSを使ってPHPで簡単RSSパース - TechMemo
- これは SimpleXML の制限ぽいですね。PHP での SimpleXML 処理 [↩]
WPtouch で iPhone/iPod touch 用の画面に変換する
- 2008-08-24 (日)
- WordPress
WordPress のプラグインで、出力画面を iPhone や iPod touch 用に変換してくれる WPtouch を有効にしてみました。
インストール自体は簡単で、配布アーカイブを展開して、プラグインディレクトリに放り込んで有効化するだけ。
細かい設定は、プラグインの管理画面から行えて、表示するページやアイコンの選択、他、連携するプラグインについての説明などがあります。flickrRSS を有効にして、Photos というページを作成すれば Flickr からの写真の表示ができたり、blip.it を有効にすると、iPhone 内で動画の再生もサポートされるみたいです。
画面自体も、さすがに専用に最適化されるだけあって、Safari で見るのよりも「らしい」表示になっていますね。携帯電話専用の出力でもなく、PC 用の出力でもなく、iPhone に合わせた画面が出力されるだけで随分と印象が変わります。
……でも、iPhone でのアクセスって、あったっけかなあ……?
Home > WordPress Archive
- Search
- Feeds
- Meta





