WordPressを使ってサイト制作をする際に、
カテゴリーを都道府県名にして、東北地方、関東地方・・・都道府県名・・・
入力して、地域別に県名を配置するのに時間と手間がかかって大変ではないでしょうか。
都道府県別カテゴリーメニューの作成を、簡単一発でできる方法をご存じの方ご指南ください。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答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
総合スコア69400
0
結果的に手作業は絶対に必要で、自身にとってどっちが楽かというとこですが・・・。
選択肢
- 管理画面で 1 つずつ入力
- 1 回だけ実行されるプログラムをかく
前者の方は説明不要だと思うので、後者の方を簡単に説明いたします。
WordPress にはさまざまな API が用意されています。当然というべきか、タクソノミーやターム(平たくいうとカテゴリー)を作成する API も用意されています。この API を利用して、プログラムを書き、そのプログラムをあるイベントで 1 回だけ実行されるようにするのがよいと思います。流れとしては、こんな感じです。
プログラムを書く場合の大まかな流れ
- register_taxonomy() 関数でタクソノミーを登録
- 都道府県の配列を作成
- 2 で作成した配列を foreach などのループで回し wp_insert_term() 関数でタームを作成
- 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
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
当方は、質問主ですが、質問して以来、3ヶ月が経過し、ふとしたインスパイアを得ました。
要するに、テスト環境で、一度だけ、全国の都道府県名を入力しておいて、そのメニュー項目をxmlファイルに落としておけば、次からは、WPのインポート機能を使えば、手間が省けるのではと考えました。
せっかくなので、作成した都道府県xmlファイルを公開しますので、(自己責任で)ご利用ください。
投稿2016/10/26 09:50
総合スコア36
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/07/19 23:14