[WPCH vol.01] ウィジェットをハック。タグクラウドのソート順を変更する

WordPress は様々な動作を、テーマやウィジェットなどに記述することで拡張することができます。ただ、ほんのちょっとのことだったり、こうだと便利なのに!と思う部分を、全部テーマやウィジェットで書き直すのはまず面倒ですし、最終的に全体のパフォーマンスに影響を与えます。

というわけで、新しいウィジェットを書いたり、テーマファイルに特別な記述をしたりするよりも、ほんのちょっとだけコアのプログラムに手を入れて、ほんのちょっとだけ楽したり、自己満足したりするカテゴリーを立ててみました。

第一弾として、多くの人がブログとして使う際に利用しているであろう、タグクラウドの並び順を変更してみます。
ファイルは、wp-dir/wp-includes/widgets.php です。


// 1340行目付近

function wp_widget_tag_cloud($args) {
	extract($args);
	$options = get_option('widget_tag_cloud');
	$title = empty($options['title']) ? __('Tags') : $options['title'];

	echo $before_widget;
	echo $before_title . $title . $after_title;
// wp_tag_cloud 並び順変更(デフォルトは名前の昇順。カウントの降順にする)
//	wp_tag_cloud(); // この行をコメントし、下のようにする
	wp_tag_cloud(array('orderby' => 'count', 'order' => 'DESC'));
	echo $after_widget;
}

上記のように、wp_tag_cloud();を、wp_tag_cloud(array('orderby' => 'count', 'order' => 'DESC'));にすることで、使用頻度(count)の高い順(DESC)に出力させることができます。

function wp_tag_cloud()は、wp-dir/wp-includes/category-template.phpにあって、以下のように書かれています。


// category-template.php function wp_tag_cloud() 内

	$defaults = array(
		'smallest' => 8, 'largest' => 22, 'unit' => 'pt', 'number' => 45,
		'format' => 'flat', 'orderby' => 'name', 'order' => 'ASC',
		'exclude' => '', 'include' => ''
	);

というわけなので、これは次のように設定できることがわかります。


// 先の wp_tag_cloud()の呼び出し箇所

	wp_tag_cloud(array(
		'smallest' => 8,	// styleで定義されるフォントサイズ(小さい)
		'largest' => 22,	// 同上(最も大きい)
		'unit' => 'pt',		// フォントサイズのユニット(ex:pt,em,px)
		'number' => 45,		// リミッター(SQL の LIMIT 句に使われるので、多くのタグを使う場合増やすこと。)
		'format' => 'flat',	// 出力形式。list(デフォルト) と flat(内部的なデフォルト)が使える。array は未調査。
		'orderby' => 'name',	// ソートキー。name と count(内部的なデフォルト) が使える
		'order' => 'ASC',	// ソート順。DESC(降順) と RAND(ランダム) が使える。ASC(昇順)はデフォルト。
		'exclude' => '',	// 含まないタグID(未検証)
		'include' => ''		// 含みたいタグID(未検証)
	);

や、ぶっちゃけ、FC2ブログが同じようにできるらしくて、WPでもできない?って聞かれただけなんですけどね。

注:この情報は、WordPress 2.5 をベースに書かれています。また、WP自体をバージョンアップする場合に、ヘタに上書きしたり、逆に反映し忘れたりしないように、サブバージョン等でのファイル管理をお勧めします。

This entry was posted on 木曜日, 5 月 8th, 2008 and is filed under WP Core Hacks, wordpress. You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.

Leave a Reply

Sponsors...No,It's a Joke:p

ǂ߂邩ȁH Office L on Twitter

site search

 

category