2008年3月27日の投稿

2008-03-27
晴れ

WordPress Japan 閉鎖とWordPress 日本語フォーラム開設

ゆりこ による 00:28:18 の投稿
カテゴリー: WordPressハック

さきほど、WordPress Japan を3月末で閉鎖するとアナウンスが出されました。WordPress Japan は、2003年の WordPress 0.7 の頃から国際化を進められてきて、WordPress ME という派生バージョンを作り出していました。しかし、本家版も国際化が進んでいき、WordPress 2.3 からは「WordPress 日本語版」が作られたかわりに ME 2.3 が出ていませんでした。事実上の開発終了となっていましたが、これで正式に「ME バージョンは終了」となります。Otsukare さん、お疲れさまでした ;-)

それを引き継ぐかのように、3月25日からは、日本語ローカルサポートフォーラムが開設されています。ユーザー登録は、WordPress 本家版と共通です (実はアカウント持っています)。WPJ フォーラムのユーザー登録とは別です。

気になるのは、未だ残る ME 2.0.x ユーザ (特に EUC-JP, Shift_JIS 運用) の人への対応でしょうか。ソフトウェア自体は GPL ですので、有志が勝手に再配布するなどのサポートが可能ですが、その場として、「日本語ローカルサポートフォーラム」が適切かどうかは微妙です……。(追記: 「使ってよい」との見解が出ました!!)

というか、閉鎖の案内から閉鎖日までが急すぎですよ!! WordPress 日本語版への乗り替えなどに時間を置くため、せめて2月末にはアナウンスすべきだったのでは……。WordPress は企業とかでも使われつつあるのに、こういう体制では使ってもらえませんよ〜〜。

イー・モバイルも同性愛をフィルタリング対象

あす音声通話サービスを開始するイー・モバイルが、未成年向けにWebアクセス制限サービスを開始すると発表しました。18歳未満ではなく未成年というところがポイントでしょうか。対象カテゴリーは以下の通りとなっています (参考: ネットスターの分類)。メインカテゴリーだけで、サブカテゴリーの対象が不明なのが困りますね。

不法、主張、アダルト、セキュリティ、ギャンブル、出会い、グロテスク、オカルト、コミュニケーション、ライフスタイル、宗教、政治活動・政党、成人嗜好

しかし、「ライフスタイル」に属するサブカテゴリーは同性愛しかないので、イー・モバイルもドコモ・ウィルコムの真似をして同性愛を対象としてしまいました!! ドコモの絵文字規格をマネするのはいいけど、これを真似するのはだめですよ〜〜。早急に意見したいと思います!!

誤解を恐れずに言うと、同性愛カテゴリー (ゲイ・レズビアン・トランスジェンダーの生活スタイルに関する各種情報の提供) をフィルタリング対象にすることは、これら当事者に対する差別を行うのと同等です。こういう電話会社は恥を知るべきです。

参考: 崎山伸夫のBlog「やはりフィルタリングは差別と偏見を助長するなぁ

内容が短いトラバを拒否するプラグイン

ゆりこ による 21:46:46 の投稿
カテゴリー: WordPressハック
タグ: ,

実は数日前、Yuriko.Net 旅行記 の WordPress インストールディレクトリーを /travel/ に戻しました。以前、/travel/ → /wordpress/ に変更したのですが、そうすると、スパムトラックバックが激減するというメリットがありました。しかし、WordPress コアやプラグインで、インストールディレクトリー (/wordpress/) と、ウェブログ URL (/travel/) が違う場合を考慮してない場合があって、そういうときは動作がおかしくなります。

また、テクノラティーは「http://www.yuriko.net/travel」という URL を探そうとしますが、サーバーが「http://www.yuriko.net/travel/」へのリダイレクトを返答しても、うまく認識していない (リファラーなどがうまくカウントされない) という問題もありました。

で、インストール先を /travel/ に戻すと、さっそくトラックバックスパムが多数来ました……。WordPress は、ウェブログの URL からトラックバック URL を簡単に推測できてしまうので、こういう問題が起きます。←間違い。wp-trackback.php を直叩きしてました (なので、インストール URL とウェブログ URL が同じ場合に攻撃されやすい)。

しかし、スパムの多くは概要 (excerpt) がめちゃめちゃ短い (ランダムな10数文字) ので、そういう場合を拒否するプラグインを作ってみました。これで退治できればいいな〜〜。ソースにある通り、ライセンスは GPL としますので、てけとうに使ってみてくらはい。

[追記] 以後3本の記事にも共通ですが、プラグインとして使うためには、新規テキストファイルを作成し、以下のコードをコピー&ペーストして、UTF-8 コード (BOM なし) で保存します。ファイル名は英数字なら何でも構いません。そして、wp-content/plugins/ にアップロードして、管理パネルで有効化すれば OK です。有効化時に Fatal Error になるときは、コピー&ペーストに失敗しています。どこかに不正な文字が入っていないか、ファイル先頭や末尾に余計な改行がないか、確認してください。

<?php /*
Plugin Name: Reject short trackbacks
Plugin URI: http://www.yuriko.net/arc/2008/03/27c
Description: Rejects short trackbacks to keep away from spams.
Author: IKEDA Yuriko
Version: 0.70
Author URI: http://www.yuriko.net/cat/wordpress
*/

/*  Copyright (c) 2008 yuriko

    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; version 2 of the License.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
*/

define ('TRACKBACK_EXCERPT_LENGTH', 32);

function reject_short_tb($commentdata) {
	if ($commentdata['comment_type'] != 'trackback') {
		return $commentdata;
	}
	$excerpt = preg_replace('|^<strong>.*?</strong>\s*|', '', $commentdata['comment_content']);
	if (strlen($excerpt) < TRACKBACK_EXCERPT_LENGTH) {
		trackback_response(1, 'We cannot accept your trackback.');
		exit;
	}
	return $commentdata;
}
add_filter('preprocess_comment', 'reject_short_tb'); ?>

[追記 2008-04-21] Akismet と併用すると、先に Akismet がスパムトラックバックを補足してしまい、本プラグインが効かないことが判明しました。末尾の add_filter部分を以下のように変更して、無理矢理 Akismet の優先順位を下げれば OK です。

add_filter('preprocess_comment', 'reject_short_tb', 1);
remove_action('preprocess_comment', 'akismet_auto_check_comment', 1);
add_action('preprocess_comment', 'akismet_auto_check_comment', 2);

[追記 2008-05-01] 修正版をリリースしました。上記のコードは使わないでください。

WordPress 2.1〜2.3 でサムネールサイズをプラグインで変更する

ゆりこ による 23:38:29 の投稿
カテゴリー: WordPressハック
タグ: ,

以前、WPJ フォーラムに投稿したネタで、「デフォルトのサムネールサイズをプラグインで変更する」というのがありました。デフォルトは、「長辺側が128ピクセル」と小さめになっています。WordPress のコアファイルをいじって大きくする改造がよく見かけられますが、それだとアップグレードの度に修正が必要です。プラグインならば、改造のやり直しは不要です。

WPJ フォーラムの廃止が迫っているので、ソースコードをサルベージしておきましょう。オリジナルはわざわざクラス宣言していますが、それはやめて単純化してあります。また、ライセンスが不明でしたが、tai さんの指定通り GPL としておきます (パブリックドメインにしたいけど日本では困難)。なお、WordPress 2.0.x 以前では wp_thumbnail_max_side_length フックがないので、このプラグインは使えません。また、WordPress 2.5 からは画像アップロード時にサムネールサイズを指定できる、かつ、wp_thumbnail_max_side_length がないのでお役御免です。

<?php 
/*
Plugin Name: Change Thumbnail Max Side Length
Plugin URI: http://www.yuriko.net/arc/2008/03/27d
Description: Change the max side length of thumbnails.
Author: IKEDA yuriko
Version: 0.80
Author URI: http://www.yuriko.net/cat/wordpress
*/

/*  Copyright (c) 2007-2008 yuriko

    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; version 2 of the License.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
*/

define('MY_THUMBNAIL_MAX_SIDE_LENGTH', 160);

function change_thumb_max_length($length, $attachment_id, $file) {
   return MY_THUMBNAIL_MAX_SIDE_LENGTH;
}
add_filter('wp_thumbnail_max_side_length', 'change_thumb_max_length', 10, 3);
?>

[追記 2009-01-23] この投稿に対するスパムコメントが多いため、当面コメント不可とさせて頂きます。

WordPress ヘのトラックバックを禁止するプラグイン

ゆりこ による 23:52:22 の投稿
カテゴリー: WordPressハック
タグ: ,

これまた WPJ フォーラムの発掘ネタです。「トラックバック機能を完全に停止させたい」という要望に応じて、プラグインを作ってみました。管理パネルで「他のブログからのリンク通知を許可する (ピンバックとトラックバック)」というのがありますが、これは「今後作成する投稿で、ピン受信するチェックボックスのデフォルト値」を決めるものであって、トラックバックの受信中止をするものではありません。また、各投稿でピン受信を禁止にしても、wp-trackback.php 内部で ping_status の確認のためにデータベースアクセスが発生してしまいます。

このプラグインは、wp-trackback.php を呼ばないようにするという仕組みなので、トラックバックを一切使わない人には有用なものになっています ;-) オリジナルは 404 エラーを返しましたが、今バージョンは 403 エラーを返すことにしました。また、GPLv2 ライセンスとしました (元はライセンス不明)。

<?php 
/* 
Plugin Name: Disable Trackback 
Plugin URI: http://www.yuriko.net/arc/2008/03/27e
Description: Return 403 error for trackbacks. 
Author: IKEDA Yuriko 
Version: 0.99
Author URI: http://www.yuriko.net/cat/wordpress 
*/ 

/*  Copyright (c) 2007-2008 yuriko

    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; version 2 of the License.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
*/

function disable_trackback() {
   if (is_trackback()) {
      header("HTTP/1.0 403 Forbidden");
?>
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<HTML><HEAD>
<TITLE>403 Forbidden</TITLE>
</HEAD><BODY>
<H1>Forbidden</H1>
You don't have permission to access the URL on this server.
</BODY></HTML>
<?php
      exit();
   }
}
add_action('template_redirect', 'disable_trackback');

?>