WordPressでカテゴリとして「都道府県・市町村一覧」を一括インポートさせる為のXMLファイルと、カテゴリ定義部分のXMLを生成用のExcelファイルを作成しました。今回は作業記録として記載します。
概要
カテゴリとして全国都道府県・市町村一覧(階層構造)をインポートし、カテゴリはチェックボックス一覧として表示します。これらカテゴリは検索項目となるようにしました。
内容
カテゴリ一覧を登録する
作成したインポートファイルを使用して、都道府県・市町村一覧をカテゴリ登録しました。カテゴリは以下のような構造です。
全国 +--- 都道府県 +--- 市町村
カテゴリ一覧を取得するfunctionを作る
「とりさんのソフト屋さん」の記事を参考に「全国-都道府県-市町村」の順(term_id昇順)で取得する関数をfunction.phpへ記載します。「全国」のterm_idが13だったので13以下を指定しています。
/* -------------------------------------- カテゴリ一覧取得 ---------------------------------------*/ function get_all_category_all() { if ( ! $cat_all = wp_cache_get( 'all_category_all', 'category' ) ) { // 指定カテゴリ以下取得 $cat_all = get_terms( 'category', 'fields=all&child_of=13&orderby=id&hide_empty=0' ); wp_cache_add( 'all_category_all', $cat_all, 'category' ); } return $cat_all; }
カテゴリ一覧を表示する
WordPressフォーラム「カテゴリをチェックボックスにし複数選択したい」を参考に、カテゴリ一覧取得&表示箇所を以下のように書き換えました。
$cats = get_all_category_all(); $prev_parent = 0; // 前カテゴリの親term_id echo "<ul>"; foreach($cats as $cat) : $id = "cat-" . $cat->term_id; if($cat->parent == 13){ // 都道府県名 // 親IDが初回(0)でなく、前回の親ID=13以外なら市町村リスト終了 if($prev_parent > 0 && $prev_parent != 13){ echo "</p></li>"; } echo "<label for=' . $id . '>$cat->name</label>"; }else{ // 前回の親ID=13なら市町村リスト開始 if($prev_parent == 13){ echo "<li><p>"; } echo '<label for="' . $id . '">' . '<input type="checkbox" value="' . $cat->term_id . '" name="category[$id]" id="' . $id . '" />'. $cat->name . '</label>'; } $prev_parent = $cat->parent; // 前の親term_idを保存 endforeach; echo "</ul>";
ファイル
ファイル公開はしていません。