質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

Q&A

解決済

3回答

9413閲覧

WordPressのメニューに都道府県

HiroakiMatsuda

総合スコア36

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

1グッド

3クリップ

投稿2016/07/19 03:30

WordPressを使ってサイト制作をする際に、
カテゴリーを都道府県名にして、東北地方、関東地方・・・都道府県名・・・
入力して、地域別に県名を配置するのに時間と手間がかかって大変ではないでしょうか。

都道府県別カテゴリーメニューの作成を、簡単一発でできる方法をご存じの方ご指南ください。

kei344👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

こんなものもあるようです。

【WordPress: カテゴリに47都道府県を自動登録 | WooCommerce Theme Development | IBRIDGE】
https://ibgroup.co.jp/auto-register-japan-state/

【WPに都道府県・市町村をカテゴリとして一括で登録する方法 | 怠け者エンジニアがいろいろと】
http://lazy-engineer.com/?p=49

【WordPressで地域型ポータルサイトを作るときに使える都道府県市区町村をカテゴリーにインポートするxmlファイルを作りました - Web制作をもっと楽しく「リパレード」】
https://reparade.com/log/wordpress/category-japan.html

投稿2016/07/19 04:54

kei344

総合スコア69400

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

HiroakiMatsuda

2016/07/19 23:14

テマヒマかかる作業に悩んでいる先人が、楽できる方法を考えて、無償配布してくれているのは、ありがたいことです。
guest

0

結果的に手作業は絶対に必要で、自身にとってどっちが楽かというとこですが・・・。

選択肢

  • 管理画面で 1 つずつ入力
  • 1 回だけ実行されるプログラムをかく

前者の方は説明不要だと思うので、後者の方を簡単に説明いたします。
WordPress にはさまざまな API が用意されています。当然というべきか、タクソノミーやターム(平たくいうとカテゴリー)を作成する API も用意されています。この API を利用して、プログラムを書き、そのプログラムをあるイベントで 1 回だけ実行されるようにするのがよいと思います。流れとしては、こんな感じです。

プログラムを書く場合の大まかな流れ

  1. register_taxonomy() 関数でタクソノミーを登録
  2. 都道府県の配列を作成
  3. 2 で作成した配列を foreach などのループで回し wp_insert_term() 関数でタームを作成
  4. 2 と 3 をテーマまたはプラグインで 1 回だけ実行されるイベントにフックさせる

2 と 3 は 1 つの関数やメソッドに纏めるなどした方がいいでしょう。フックするときに楽だと思います。

1 回だけ実行されるイベント

テーマとプラグインでことなるので注意が必要です。また、テーマ固有の機能(テーマを変更したらその機能は不要)な場合は、テーマの functions などに書くとよいですが、テーマを変えて無くったら困る機能はプラグインにすべきと思います。テーマとプラグインとで 1 回だけ実行されるイベントとして、使いやすいイベントを以下に示します。

テーマ

イベント種類概要
after_switch_themeアクションフックテーマが有効化された際に実行される

プラグイン

イベント種類概要
register_activation_hook関数プラグインが有効化された際に実行される
register_deactivation_hook関数プラグインが無効化された際に実行される
register_uninstall_hook関数プラグインが削除された際に実行される

一例

テストしていないので、動作未保証です。イメージとしてこのような感じ、という風に捉えてください。

function register_regions() { // 第二引数以降は省略しています register_taxonomy( 'regions' ); } add_action( 'init', 'register_regions' ); function insert_regions() { $terms['regions'][] = array( 'name' => '北海道', 'slug' => 'hokkaido' ); $terms['regions'][] = array( 'name' => '青森', 'slug' => 'aomori' ); $terms['regions'][] = array( 'name' => '秋田', 'slug' => 'akita' ); // 〜以下略〜 foreach ( $terms as $key => $term ) { foreach ( $term as $value ) { wp_insert_term( $value['name'], $key, array( 'slug' => $value['slug'] ) ); } } } add_action( 'after_switch_theme', 'insert_regions' );

Or

function register_regions() { // 第二引数以降は省略しています register_taxonomy( 'regions' ); } add_action( 'init', 'register_regions' ); function insert_regions() { $terms['regions'][] = array( 'name' => '北海道', 'slug' => 'hokkaido' ); $terms['regions'][] = array( 'name' => '青森', 'slug' => 'aomori' ); $terms['regions'][] = array( 'name' => '秋田', 'slug' => 'akita' ); // 〜以下略〜 foreach ( $terms as $key => $term ) { foreach ( $term as $value ) { wp_insert_term( $value['name'], $key, array( 'slug' => $value['slug'] ) ); } } } register_activation_hook(__FILE__, 'insert_regions' );

投稿2016/07/19 04:39

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

HiroakiMatsuda

2016/07/19 23:17

コードまで教えていただき大変感謝いたします。
guest

0

当方は、質問主ですが、質問して以来、3ヶ月が経過し、ふとしたインスパイアを得ました。
要するに、テスト環境で、一度だけ、全国の都道府県名を入力しておいて、そのメニュー項目をxmlファイルに落としておけば、次からは、WPのインポート機能を使えば、手間が省けるのではと考えました。

せっかくなので、作成した都道府県xmlファイルを公開しますので、(自己責任で)ご利用ください。

http://wphack.tokyo/

投稿2016/10/26 09:50

HiroakiMatsuda

総合スコア36

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問