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>";
ファイル
ファイル公開はしていません。