Simple Tags プラグインのクリックタグ表示をアルファベット順にしたい

Simple Tags プラグインにはクリックタグというタグ入力支援の機能があって、なかなか便利なんだけど、表示されるタグの候補がタグ ID の順に並んでいて、アルファベット順とかになっていないのでタグの選択漏れや、似たようなタグを複数つくってしまうというようなミスが起こりやすい。

ということで、これをきちんと並ぶようにしたい。時間ができたらやってみよう。

やってみた。
 ↓

コードの修正

/2.5/inc/simple-tags.admin.php ファイルの中の、ajaxSuggestLocal() と ajaxLocalTags() という2つの関数について、SQL 文に「ORDER BY name ASC」の1行を追加する必要がある。

<?php
	// Get all terms
	global $wpdb;
	$terms = $wpdb->get_col("
		SELECT DISTINCT name
		FROM {$wpdb->terms} AS t
		INNER JOIN {$wpdb->term_taxonomy} AS tt ON t.term_id = tt.term_id
		WHERE tt.taxonomy = 'post_tag' 
		ORDER BY name ASC
	");//ORDER BY clause is ADDED BY minorio
	$terms = array_unique($terms);
?>

これで、表示されるタグの候補がタグ ID 順からアルファベット順になる。でも日本語が含まれる場合、ひらがなとカタカナ以外はあいうえお順にはならないけど。しかもひらがなとカタカナは a と b の間に並ぶみたい。

まあちょっとだけ使いやすくなったかな・・。

コードを改善した

SQL の時点で並べ替えてもいまいちだったので、array に対して並べ替えを実行するように変更してみた。これならきちんと アルファベット→ひらがな→カタカナ→漢字 の順番になる。これでいいでしょう。

<?php
	// Get all terms
	global $wpdb;
	$terms = $wpdb->get_col("
		SELECT DISTINCT name
		FROM {$wpdb->terms} AS t
		INNER JOIN {$wpdb->term_taxonomy} AS tt ON t.term_id = tt.term_id
		WHERE tt.taxonomy = 'post_tag' 
	");
	$terms = array_unique($terms);
	sort($terms, SORT_LOCALE_STRING);//ADDED BY minorio
?>