Tag: plugin’

WordPressでトラックバックスパム対策 in 2012

 - by Don

昨年末あたりから英文のトラックバックスパムが来るようになってしまいました。その対策のために導入したWordPressプラグインをご紹介します。

Simple Trackback Validation

検索でヒット率が高いので導入してみたトラックバックスパム対策専用プラグイン。仕組みは、トラックバック元のサイトに自サイトへのリンクが張られていない場合はSPAMとみなす、という単純なものです。これだけでもかなりの割合のSPAMを弾けるのですが、律儀に自サイトへのリンクを張ってくれているSPAMは弾けません。実際にそういうSPAMも来ています。

また、最終更新日が2007年というのも不安要素です。一応、WordPress/3.3でも動いているようですが。

Throws SPAM Away

日本語を含まないコメントを弾く、コメント専用SPAM対策プラグイン。…でしたが、バージョン1.5からはトラックバックに対しても同様の規制が可能となりました。さらに、Simple Trackback Validationと同様に、自サイトへのリンクによる言及がないかチェックする機能もついています。というわけで、Simple Trackback Validationは無効化してThrows SPAM Awayに移行してみました。

実は、トラックバックスパムへの対応は私がThrows SPAM Awayの作者様に検討をお願いしていたものなのです。お忙しい中、要望に応えて頂きました製作者のさとう様に、この場を借りて御礼申し上げます。ありがとうございました。

ninix-aya用のプラグインを作ってみた

 - by Don

ninix-ayaのプラグインを作ってみようと思ったのですが、何を作ったらいいかわからないので、とりあえずSSPのプラグインを移植してみようと思い立ちました。

nikolat/HitThunder – GitHub

使ってみて気が付きましたが、ninix-ayaはNOTIFY SSTP/1.1に対応していないのですねver 4.3.2で対応されました。プラグイン自体はSSTPを送信するだけのシロモノなので、先にSSPを起動しておいた後にninix-ayaを起動し、実体化プラグインを実行するとSSPのゴーストに通知されるので正常に実行されていることが確認できます。

SSPの場合はPLUGIN/2.0の仕様に従ってプラグインに対してイベントが通知される形式なので、色々と情報が取得できる上、ベースウェアが起動している間ずっと常駐できます。しかしninix-ayaの場合はPythonスクリプトを実行するだけのシンプルな構成なのであまり凝ったことはしない方が賢明のようです。プラグイン実行ゴーストなどもSSPであればSenderなどで取得できますが、ninix-ayaでは判別するのも難しいかも。

ninix-ayaでpluginを使用する

 - by Don

ninix-aya 4.3.1がリリースされましたのでユーザーレビュー的な記事を書いてみようと思います。

ver4.3ではWindows用インストーラが配布開始されたことと、プラグインに関してのサポート強化が特徴のようです。

Windows用インストーラ

ダウンロード – ninix-aya – SourceForge.JP

こちらからninix-aya-4.x.x.win32.exe をダウンロードして実行します(ninix-ayaの起動に必要な環境が揃っているものとします)。

ninix-aya-installer-error

ninix-aya-installer-error

(´・ω・`)

NOBさんのところではインストールできたらしいので、きれいな心とクリーンなPC環境を備えた人であればインストールできることでしょう。

私はCygwinでmake installしました。

プラグイン

Windows用インストーラには含まれているのかな?ダウンロードページにotenkiyanというのがありますが、多分これですね。

DLしたZIPを展開すると、plugin.txtという定義ファイルと思しきテキストファイルとotenkiyan.pyというPythonスクリプトファイルが入っていました。どうすんだこれ。

多分 ~/.ninix/plugin/ とかいうディレクトリを掘ってそこにフォルダごと突っ込んでおけばいいのだろう。

ninix-aya-plugin-menu

ninix-aya-plugin-menu

(`・ω・´)Bingo!

でもクリックしても無反応(´・ω・`)

何かやり方が間違ってるのかな?プラグインに関するドキュメントっぽいものが書かれる予定があるらしいのでそれまで待つことにします。タイトルは釣りでした。

Windowsでは(多分PyGTKのバグで)Drag and Dropが効かないですが、LinuxではコンソールへのDnDでnarをインストールできるらしいので(試してない)、pluginのzipもDnDでインストールできるのかもしれない(試してない)。仮にそうだとしたら、定義ファイルはplugin.txtとかじゃなくてinstall.txtとdescript.txtで定義したほうが…とか思ったけどninix-ayaの独自規格なら統一する必要もないのかなーとか、うーん。

追記

pluginもConsoleのInstallボタンからインストールできるようです。

動作にはpywapiが必要ということで、インストールしておきます。

設定から"IfGhostに一致するゴーストがいない場合に他のゴーストで再生(SEND/1.4)"(Allowembryo)をONにします。

ninix-plugin-boot-1

ninix-plugin-boot-1


ninix-plugin-boot-2

ninix-plugin-boot-2

これでSEND SSTP/1.4が有効になってplugin実行ゴーストでスクリプトが再生されます。

WordPressで英文スパム対策 in 2011

 - by Don

一昨日あたりから急に英語のSPAMコメントがわんさかやってくるようになりました。開設当時にSI CAPTCHA Anti-Spamで画像認証付けていたので大丈夫だろうと思っていたら見事に破られました。最近のSPAMは賢いですね。

何か他のSPAM対策プラグインを併用しようと探していて見つけたのが以下の2つ。選定基準は日本語リソースでかつ2011年に更新があったもの、です。

SPAM-BYEBYEはコメントの内容を総合的に判断する得点方式みたいです。

  1. メッセージに日本語が含まれていない場合
  2. メッセージにURLが複数含まれている場合
  3. メッセージ(又はURL欄)に含まれるURLがURLブラックリストデータベースに登録されている場合
  4. 投稿したクライアントのホストがDNSブラックリストデータベースに登録されている場合
  5. 名前欄にURLが含まれている場合

Throws SPAM Awayは単純に日本語が含まれているかどうかを検査する方式のようです。

今回は、公式の方にアップされてるということでベータ版のSPAM-BYEBYEより信頼できそうな気がしたのでThrows SPAM Awayを導入してみました。設定も単純明快で今の状況には十分効果がありそうです。

YAYAからPLUGINを呼び出す

 - by Don

SAORIみたいに呼ぶ

YAYAからSAORIを呼び出す関数(FUNCTIONEX)は大抵システム辞書(yaya_shiori3.dic)に書いてあります。

そこでPLUGINを呼び出す関数も書いてみました。

https://gist.github.com/1048890

はろーYAYAわーるど」のシステム辞書に追加する形で利用できます。

PLUGINは通常ユーザが実行する、もしくは![raiseplugin]などを使ってSSP経由でゴーストが呼び出すものですが、何らかの事情でゴーストに同梱してSHIORIから直接呼び出したい場合もあるかもしれません。usage.txtの例にある通り、SwissArmyKnifeなど多機能なPLUGINもありますし、ユーザがPLUGINを無効化していた場合などでもゴーストに同梱しておけばいつでも使えて安心です。(メジャーな機能を持つSAORIは各ゴーストに積むよりもPLUGINにしてみんなで利用しよう、という精神に反しますが。)

里々からPLUGINを呼び出したい場合は、satori.dll =(SAORI)=> yaya.dll =(PLUGIN)=> SAKNIFE.DLL といった具合にYAYA as SAORI経由で二段重ねで呼び出せます。

もちろん、SAORIのように単一機能を呼び出すだけの単純な構成のPLUGINに限られます。PLUGINはGHOSTと一緒で、常にSSPからイベントを受信しているので、通常は複雑な機能を実現する場合が多いです。

何故こんなものを

gomi.dllがバグってると聞いたので、SAORIでないとダメなのかなと思って書いてみました。でもやはりPLUGINは![raiseplugin]で利用した方がいいですね。

iPhone用の表示とAutoPagerize対応

 - by Don

WPtouch

WordPressをiPhone用に表示するplugin。Free版を入れてみましたが、なかなかきれいに表示してくれます。pluginを有効にするだけという手軽さで、大変気に入りました。

wptouch

wptouch


AutoPagerize対応

他のサイトでもさんざんやってきたので今更ですが、WordPress特有の関数とかもあるので軽くメモ。

single.phpはhead内に既にrel="prev"とrel="next"が入ってるのでclass="autopagerize_page_element"を適当なところに入れるだけで大丈夫。

index.phpに古いページへのリンクがprevious_posts_linkとかいう関数で挿入されていて、簡単にclassを付加できない。そこでfunctions.php内でこんな処理を走らせると良いらしい。

function my_auto_pagerize_rel_filter($content) {
    return "{$content} rel="next"";
}
add_filter('next_posts_link_attributes', 'my_auto_pagerize_rel_filter');

あとはautopagerize_page_elementやらautopagerize_insert_beforeやらを好きなところに入れて終わり。

WP Colorful Tag Cloudを入れてみた

 - by Don

WP Colorful Tag Cloudを入れてみました。その名の通りタグクラウドをカラフルにしてくれるプラグイン。色も好きなように変更できて楽しいです。
もっと色んなタグを増やして彩りを良くしたいですね。そのためにも色んなジャンルでブログを書かねば。

あとBroken Link Checkerっていうのも入れてみました。ブログ内のデッドリンクを見つけて教えてくれるプラグイン。ここは開設して間もないのでまだお世話になる機会はないですが、Webにおいてデッドリンクほど残念なものは無いので、気を付けたいところです。

Google Code Prettify for wordpressを入れてみた

 - by Don

google-code-prettifyをWordPressに適用するGoogle Code Prettify for wordpressを入れてみました2011-04-22現在配布元が404になってますねSyntaxHighlighterはやり過ぎ感があって好きではないので、他にもっと軽いハイライトモジュールを探していてこれに決めました。

preタグやcodeタグのclass属性に"prettyprint"を加えるだけで言語は自動判定してくれます。

<pre><code class="prettyprint">
適当なコード
</code></pre>

他にSimilar Postsもインストール。関連記事を表示してくれるプラグインです。Post-Plugin Libraryに依存しているのでこれもインストール。

トラックバックの表示

 - by Don

今日はトラックバックに関連する設定をしていました。

まずGet Recent Commentsをインストール。これはサイドバーにcommentとtrackbackを分離してウィジェットで表示してくれるプラグインです(標準ではcommentとtrackbackが一緒くたに表示されてしまいます)。

ただ、このままだとtrackbackのウィジェットのidがcommentのidと被ってしまいますのでget-recent-comments.phpの該当部分を以下のように修正。

function kjgrc_create_recent_trackbacks( $caller = '')
{
	global $kjgrc_we_are_a_widget,$kjgrc_widget_args;

	// $entries = kjgrc_get_entries($max_comments,$chars_per_comment,$chars_per_word,$format,$query,0,$caller);
	$entries = kjgrc_get_comments2('grt',$caller);
	// If we are a widget: Also care for the title
	if ($kjgrc_we_are_a_widget == TRUE) {
		extract($kjgrc_widget_args);
		$entries = $before_widget . $before_title . kjgrc_get_option("grt","sidebar_title") . $after_title .
		'<div id="get_recent_trackbacks_wrap"><ul>' .
		$entries .
		'</ul></div>' .
		$after_widget;
		$entries = str_replace('id="get-recent-comments"', 'id="get-recent-trackbacks"', $entries);
		return $entries;
	}
	return $entries;
}

次に単一記事に対するtrackback数の表示。comment数は"n comments"とかって表示されてますけどtrackback数も表示したいので。

まず、Trackping Separatorをインストール。

functions.phpあたりに以下の関数を追加。

function trackbacks_popup_link() {
	$c = trackpings('count');
	if ($c === 0) {
		$mes = 'No trackbacks';
	} else if ($c === 1) {
		$mes = '1 trackback';
	} else {
		$mes = $c.' trackbacks';
	}
	echo '<a href="';
	the_permalink();
	echo '#trackback" title="Trackback">'.$mes.' »</a>';
}

index.php, archive.php, single.phpのcomment数を表示している部分の後でこの関数を呼び出します。

しかし、このままでは肝心のtrackbackリストそのものが表示されていません。

comments.phpの最後にテーマのcommentsの部分を参考にしながら追加します。

<?php $trackbacks = trackpings(); ?>
<?php if ($trackbacks) : ?>
<aside id="trackback">
<h2>trackbacks</h2>
	<ol class="trackbacklist">
	<?php foreach ($trackbacks as $comment) : ?>
	<li class="<?php echo $oddcomment; ?>" id="comment-<?php comment_ID() ?>">
		<div class="quote"><br /><?php comment_text() ?></div>
	<?php comment_author_link() ?> on <a href="#comment-<?php comment_ID() ?>" title=""><?php comment_date('F jS, Y') ?> at <?php comment_time() ?> <?php edit_comment_link('edit','  ',''); ?></a>
	</li>
	<?php endforeach; ?>
	</ol>
</aside>
<?php endif; ?>

これでようやくトラックバックが表示されます。疲れた。

Head Cleanerを入れてみた

 - by Don

Head Cleaner

HTMLのhead内をきれいにしてくれる。これは良いですね。
<!--[if lt IE 9]><![endif]-->がコメント扱いされて消されてしまうのが惜しい。<!--[if IE]><![endif]-->は残るみたい。version 1.4.2.1にアップデートしたら大丈夫でした。素晴らしい。

ついでにテーマをいじってRSS2.0およびAtom1.0を追加。

Google Analyticsをhead内に移動。