Home > Tags > patch

patch Tag Archive

Twitpress を twicco に力業で対応させてみる

Twitter の日本語版向けサービスとして立ち上がった、twicco は特定の話題を扱うコミュニティを作ることができるサービス。

さっそく私も興味があるところに登録してみました。

で、それに関連する話題をブログにポストしたときに、コミュニティ向けに reply してやれると便利じゃね? と短絡的に考えた結果、またしても Twitpress をちょっとだけカスタマイズしてみました。

具体的な動作は、指定したカテゴリに属するポストがされたとき、指定したコミュニティ宛に reply 用の文字列 @~ を付けてやるという単純なものです。

既存のソースに数行追加するだけの簡単なものなので、ご参考までに。

Continue reading

Twitpress の通知 URL にパーマリンクをちゃんと使いたい

WordPress 2.3 でカノニカル URL が導入されたのが原因か判断付かないのですが、TwitpressMessage 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_typepost の時のみ通知を行うように変更してみました。

//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へポストされるのがイヤな場合は、このような書き換えで回避できそうです。

Twitpress を改造して Wassrpress (仮)にする

現在、マイクロブログは Twitter をメインに呟いていますが、なんだか今日あたり、Wassr への流れができていたので、アカウント作ってみました。

WordPress から Twitter への更新通知のポストは、Twitpress で行えていますが、Wassr も API が公開されているので、これを改造して対応できないかといじってみたらできたみたいなので、パッチを置いておきます。

適当にやったので関数名とかDB名の頭が大文字になっちゃってますが、気持ち悪いようなら適宜小文字に変更するなどして下さい。というか、置換で大文字小文字区別しなかったせいですががが。

ちょっと長くなったので、続きを読むの後に置いておきます。素人が適当にいじったせいで動作保証も何もあったものではないので、書き換えた場所だけチェックして自力で改造するのが良いと思います(^^;

一応、動くことは確認してありますが、ご利用の際は注意してください。

Wassbacker

Wassbacker を使えば、ブログツールから Ping を送信するだけで通知できるので、こちらのサービスにパスワード等を預けることを許容できるなら、こちらを利用するのも良いかもしれません。

Continue reading

WordPress のカテゴリ管理画面でカテゴリ ID の隣にterm_taxonomy_id を表示する

先日掲載した Customizable Post Listings のパッチですが、カテゴリーID の代わりに wp_term_taxonomy テーブルの term_taxonomy_id を指定するようになっているために、カテゴリー管理画面のカテゴリー ID を書いてやると期待しない結果が帰ってくることに今更気付きました。

term_taxonomy_id を簡単に確認する方法がないため、とりあえず、phpMyAdmin でテーブルの構成を表示して調べて急場をしのいだのですが、これでは不便で仕方がないので、カテゴリー管理画面上で、カテゴリー ID と term_taxonomy_id を並列して表示するようにしてみました。

WordPress ハック (term_taxonomy_id をカテゴリ管理画面で確認する)

Continue reading

Customizable Post Listings を WordPress 2.3 系統で使用する

WordPress 2.3 以降対応の Ver3.0が公開!

coffee2code.com » Customizable Post Listings にて、ついに WordPress 2.3 以降に対応した Customizable Post Listings が公開されました。

以下用済みの記述

カテゴリを指定して最近の投稿やコメントのリストを生成できるプラグイン、Customizable Post Listings は大変便利なのですが、WordPress 2.3 でカテゴリを指定しようとすると、

WordPress database error Table '***.wp_post2cat' doesn't ex
ist for query SELECT DISTINCT * FROM wp_posts LEFT JOIN wp_post2cat ON (wp_posts.ID = wp_post2cat.post_id)  AND ( category_id
 = 13) WHERE wp_posts.post_date <= '2008-01-18 12:33:51' AND ( wp_posts.post_status = 'publish' ) AND wp_posts.post_password 
= '' GROUP BY wp_posts.ID ORDER BY wp_posts.post_date DESC LIMIT 0, 10

のようなエラーが出ます。これは、power source* » WP2.3: データベース変更点の確認 にあるように、 wp_post2catがなくなってしまったせいなのですね。WordPress2.3で動作しないプラグインのリスト | コリス にもしっかり載っていますし。

けれども、これが使えないと不便な場合も多いので、なんとかできないか調べてみました。

WordPress 公式サイトの WordPress › Customizable Post Listings « WordPress Plugins で配布されている最新バージョンは、1.5 ですが、Scott Reilly 氏のサイトで配布されている1.1に対するパッチが見つかりました。

(追記)該当の記事の少し後に、SQL 構文が間違っているというツッコミ があったので、それを反映して、パッチ、ダウンロードファイルを置き換えてあります。

パッチ

$ diff -u customizable-post-listings.php.org customizable-post-listings.php
--- customizable-post-listings.php.org  2004-09-27 13:50:33.000000000 +0900
+++ customizable-post-listings.php      2008-01-18 13:32:27.000000000 +0900
@@ -39,10 +39,13 @@
        $authors = '',                  // space separated list of author IDs -- leave empty to get all
        $include_passworded_posts = false) 
 {
-       global $wpdb, $tablecomments, $tableposts, $tablepost2cat;
+       global $wpdb, $tablecomments, $tableposts, $tableterm_relationships, $tableterm_taxonomy;
        if ($add_recent_comment_to_sql && !isset($tablecomments)) $tablecomments = $wpdb->comments;
-       if (!isset($tablepost2cat)) $tablepost2cat = $wpdb->post2cat;
+       if ($add_recent_comment_to_sql && !isset($tablecomments)) $tablecomments = $wpdb->comments;
+       if (!isset($tableterm_relationships)) $tableterm_relationships = $wpdb->term_relationships;
+       if (!isset($tableterm_taxonomy)) $tableterm_taxonomy = $wpdb->term_taxonomy;
        if (!isset($tableposts)) $tableposts = $wpdb->posts;
+
        if ($order != 'ASC') $order = 'DESC';
        if ('max_comment_date' == $orderby) { $add_recent_comment_to_sql = 1; }
        else {
@@ -55,7 +58,7 @@
        if ($add_recent_comment_to_sql) $sql = "SELECT $tableposts.*, MAX(comment_date) AS max_comment_date FROM $tablecomments, $tableposts ";
        else $sql = "SELECT DISTINCT * FROM $tableposts ";
        if ($categories) {
-               $sql .= "LEFT JOIN $tablepost2cat ON ($tableposts.ID = $tablepost2cat.post_id) ";
+               $sql .= "LEFT JOIN $tableterm_relationships ON ($tableposts.ID = $tableterm_relationships.object_id) LEFT JOIN $tableterm_taxonomy ON ($tableterm_relationships.term_taxonomy_id = $tableterm_taxonomy.term_taxonomy_id)";
                $cats = explode(' ', $categories);
        }
        $sql .= "WHERE $tableposts.post_date <= '$now' AND ( $tableposts.post_status = 'publish' ";
@@ -69,7 +72,7 @@
                foreach ($cats as $cat) {
                        if ($first) $first = 0;
                        else $sql .= "OR ";
-                       $sql .= "$tablepost2cat.category_id = '$cat' ";
+                       $sql .= "$tableterm_relationships.term_taxonomy_id = '$cat' ";
                }
                $sql .= ") ";
        }

使い方

Customizable Post Listings:Functions にある使い方がそのまま適用されますが、$categories で指定するのは、カテゴリー ID ではなく、WordPress 2.3 で新設された、wp_term_taxonomy テーブルの term_taxonomy_id を指定します。簡単にこの値を調べる方法はないので、管理画面で確認できるようにしました。併せてこちらのパッチも適用すると、使いやすくなるかと。

ダウンロード

簡単なパッチですが、適応済みの 1.1 のファイルをアップロードしておきます。当方の環境では動いていますが、ご利用の際はテスト環境などで動作確認の上、お使い下さい。

Home > Tags > patch

Support Banner
  • 『遥かに仰ぎ、麗しの』応援バナー
Search
Feeds
Meta
Sponsored Link
Blog Parts
あわせて読みたい フィードメーター - MOMENTS

Return to page top