投稿をアルファベット順にならべインデックス化する
Posted: 1月 14th, 2010 | Author: admin | Filed under: plugin, wordPress | No Comments »記事をインデックスをつけてアルファベット順一覧にしたい。
例によってwordpress.orgでサーチすると、以下がよさそうだ。
http://wordpress.org/extend/plugins/azindex/
しかし、こちらは一ページにすべてのタイトルを表示するので、量が多い場合醜くなる場合があり、用語解説的な用途と思われ、今回はパス
その他を検討した結果こちらのプラグインに
http://wordpress.org/extend/plugins/wp-snap/
こちらのプラグインの欠点としてページングの機能がない。そして、すべてを表示のとき、アルファベット順に表示される。すべて表示は時系列にさせたい。なぜなら、アルファベット順はタグ化されるのでいらないから。3っ箇所強引に変更することにした。
1.RECENT指定のときは、wordPressの標準の機能をつかう
$wp_query->post_count = count($all_posts);
$wp_query->posts = $all_posts;を
if ($this->first_letters !== NULL) {
$wp_query->post_count = count($all_posts);
$wp_query->posts = $all_posts;
}上記の処理によって、アルファベット指定されていないとき、配列のポインター処理がスキップされる。すなわちwordPressの標準機能で動作する。
2.すべて表示の場合は、wordPressの標準のページング機能を使用する
以下のコードと適当なテンプレートに挿入する
<?php if($_GET["snap"]==NULL){ ?>
<div class="navigation">
<div class="alignleft"><?php next_posts_link(‘« Older Entries’) ?></div>
<div class="alignright"><?php previous_posts_link(‘Newer Entries »’) ?></div>これによってアルファベット指定されていないとき、wordPressの標準ページング機能が動作する
3.ALLの表示をタブに追加する
// Check if ALL posts are to be displayed on first load
if ($this->firstload == ‘ALL’) {
$results .= $num_tabs . "\t<li";
if ($this->first_letters == ‘#0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ’) {
$results .= ‘ class="’ . $wp_snap_options['csscls2'] . ‘"’;
} else {
$results .= ‘><a href="’ . $url . ‘"’;
}
$results .= ‘>ALL’;
if ($this->first_letters !== ‘#0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ’) {
$results .= ‘</a>’;
}
$results .= "</li>\n";
}
を以下に変更する
$results .= $num_tabs . "\t<li";
if ($this->first_letters == ‘#0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ’) {
$results .= ‘ class="’ . $wp_snap_options['csscls2'] . ‘"’;
} else {
$results .= ‘><a href="’ . $url . ‘"’;
}
$results .= ‘>ALL’;
if ($this->first_letters !== ‘#0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ’) {
$results .= ‘</a>’;
}
$results .= "</li>\n";
課題
アルファベット指定されたときのページング機能はない。おそらく配列ポインターの指定を解析し、修正すればできると思う。また、jQueryなどを使用して、ページ推移なしにページング機能を実現するのもよさそうだ。だが、アルファベット指定されたとき、全て表示されるのにクライアント側が希望したので、そのままにしておいた。ちなみにこの作者のコメントによると「ページングか、問題あるのしっているけど、時間がないんだ」だそうだ。
参考
- http://wordpress.org/extend/plugins/tags/alphabetical
- http://www.nateomedia.com/wares/downloads/wordpress/wp-snap/
- http://minhd.net/2009/10/13/jquery-pagination-system/

Leave a Reply