Archives‎ > ‎

[2007/05/21] WordPress:カテゴリーをドロップダウンで表示させるプラグイン Zelig Dropdown Cats

カテゴリーをドロップダウンで表現するためのプラグイン。 Zelig Dropdown Cats の設置とカスタマイズについて。
上記ページからダウンロードし、プラグインフォルダにインストールして有効化。 あとは表示させたい場所(サイドメニューなど)に次のコードを記述するだけ。

<?php zelig_dropdown_cats(); ?>

パラメーターは次の通り(開発元ページから引用)
Parameter Values Description Default
sort_column name
id
カテゴリー名か、id順でソート id
sort_order asc
desc
ソートの昇順・降順を指定 (ascending=昇順 / descending=降順) asc
file string 選択したカテゴリーのPHPファイル名 (動かない模様) index.php
hide_empty 0
1
1=空のカテゴリーを表示しない / 0=表示する 1
exclude id番号をコンマ区切りで複数指定可 リストから表示を省くカテゴリーid  
post_count 0
1
1=各カテゴリーごとのポストの数を表示する / 0=しない 0
title string プルダウンメニューの一行目に表示させたいタイトル。何も表示させたくない場合は (’title=’) のように空欄で記述 “Categories” (または対応言語の某)
boxwidth number リストボックスの幅サイズ(pixel)。これを指定しない場合もしくは0を指定した場合、最も長いカテゴリ名の幅に依存する。
カテゴリー名が指定したサイズより長い場合は、カテゴリー名が途中で切れることがある。(IE6…の場合?)
0
child_of number 指定なしもしくは-1をセットした場合、子(サブ)カテゴリーを含む全てのカテゴリーを表示する。親カテゴリーのみ表示させたい場合は0を指定する。カテゴリーIDを指定するとそのカテゴリーのみを表示する。 -1

カスタマイズ:ボタンクリックでリンクする

プルダウンを選択するだけでリンク先に飛んでしまうという挙動が個人的にイヤでGOボタンを追加。変更点は次の通り。

zeling-dropdown-cats.php 変更前
  1. $thelist .= '<form id="catform' . $rand . '" action="">' . "\n";
  2. $thelist .= '<select name="archive_chrono" onchange="window.location=(document.forms.catform' . $rand . '.archive_chrono[document.forms.catform' . $rand . '.archive_chrono.selectedIndex].value);"' . $boxlimit . "\n";
  3. if ( $title )
  4. $thelist .= '<option value="">' . $title . '</option>' . "\n";

  5. foreach ($categories as $category) {
  6. if (intval($hide_empty) == 0 || isset($category_posts["$category->cat_ID"])) {
  7. $num_found++;
  8. $link = '"'.get_category_link($category->cat_ID).'"';
  9. $link .= '>';
  10. $link .= apply_filters('list_cats', $category->cat_name, $category);
  11. if ( intval($post_count) == 1 )
  12. $link .= ' ('.intval($category->category_count).')';

  13. $thelist .= "\t<option value=$link</option>\n";
  14. }
  15. }

  16. $thelist .= '</select>
  17. ' . "\n";
  18. $thelist .= '</form>' . "\n";

変更後
  1. $thelist .= '<form id="catform' . $rand . '" action="">' . "\n";
  2. $thelist .= '<select name="archive_chrono"' . $boxlimit . "\n";
  3. if ( $title )
  4. $thelist .= '<option value="">' . $title . '</option>' . "\n";
  5.  
  6. foreach ($categories as $category) {
  7. if (intval($hide_empty) == 0 || isset($category_posts["$category->cat_ID"])) {
  8. $num_found++;
  9. $link = '"'.get_category_link($category->cat_ID).'"';
  10. $link .= '>';
  11. $link .= apply_filters('list_cats', $category->cat_name, $category);
  12. if ( intval($post_count) == 1 )
  13. $link .= ' ('.intval($category->category_count).')';
  14.  
  15. $thelist .= "\t<option value=$link</option>\n";
  16. }
  17. }
  18.  
  19. $thelist .= '</select> <input type="button" onClick="window.location=(document.forms.catform' . $rand . '.archive_chrono[document.forms.catform' . $rand . '.archive_chrono.selectedIndex].value);" value="GO" />
  20. ' . "\n";
  21. $thelist .= '</form>' . "\n";


Comments