LOADING

BLOG

HOME > BLOG > 技術 > PHP > WordPress > WordPressのアーカイブで動的なセレクトボックスを作成する方法

WordPressのアーカイブで動的なセレクトボックスを作成する方法

PHPWordPress技術

WordPressでサイトを構築している際に、ユーザーが簡単に情報を探せるようにナビゲーションを工夫することは非常に重要です。特に、ブログやニュースセクションが充実しているサイトでは、訪問者が求めている情報へ素早くアクセスできるように、カテゴリーや月別アーカイブなどのセレクトボックスを設置することが有効です。この記事では、WordPressで動的なセレクトボックスを作成する方法を、具体的なコード例を交えて解説します。

カテゴリー別セレクトボックスの作成

標準の投稿カテゴリー用

WordPressには、投稿をカテゴリーで分類する機能が標準で備わっています。このカテゴリー情報を利用して、カテゴリー別に投稿を探せるセレクトボックスを作成することができます。

以下のコードは、カテゴリー別セレクトボックスを表示する一例です。

<select name="category-select" onChange="location.href=value;">
  <option value="<?php echo home_url(); ?>/news/">カテゴリーで探す</option>
  <?php
    $categories = get_categories();
    foreach($categories as $category) {
      if(is_category() && $slug == $category->term_id) {
        echo '<option value="'.get_category_link($category->term_id).'" selected>'.$category->name.'</option>';
      } else {
        echo '<option value="'.get_category_link($category->term_id).'">'.$category->name.'</option>';
      }
    }
  ?>
</select>

このコードでは、get_categories() 関数を使用してサイト内の全カテゴリーを取得し、それぞれのカテゴリー名とリンクをセレクトボックスのオプションとして表示しています。ユーザーがオプションを選択すると、そのカテゴリーのページへ自動的にリダイレクトします。

カスタムタクソノミー用

WordPressでは、標準のカテゴリー以外にも「カスタムタクソノミー」という機能で、独自の分類法を作成することができます。例えば、コラムや特集記事など特定のセクションにカスタムカテゴリーを設定したい場合に便利です。

カスタムタクソノミー用のセレクトボックスを作成するコードは以下の通りです。

<select name="category-select" onChange="location.href=value;">
  <option value="<?php echo home_url(); ?>/column/">カテゴリーで探す</option>
  <?php
    $terms = get_terms('column-category');
    foreach($terms as $term) {
      if (is_tax() && $slug == $term->slug) {
        echo '<option value="'.get_term_link($term->slug, 'column-category').'" selected>'.$term->name.'</option>';
      } else {
        echo '<option value="'.get_term_link($term->slug, 'column-category').'">'.$term->name.'</option>';
      }
    }
  ?>
</select>

このコードでは、get_terms() 関数を使用して特定のカスタムタクソノミーに属する全てのタームを取得し、セレクトボックスに表示しています。

月別アーカイブセレクトボックスの作成

サイトに長期間にわたる投稿がある場合、月別アーカイブで過去の投稿を探せるようにすると便利です。WordPressでは、wp_get_archives() 関数を使用して簡単に月別アーカイブのセレクトボックスを作成できます。

以下は、月別アーカイブセレクトボックスを表示するコードの例です。

<select name="monthly-select" onChange='document.location.href=this.options[this.selectedIndex].value;'>
  <option value="">月別で探す</option>
  <?php
    wp_get_archives(array(
      'type' => 'monthly',
      'format' => 'option',
      'post_type' => 'post'
    ));
  ?>
</select>

このコードでは、wp_get_archives() 関数にtypemonthlyformatoptionと指定することで、セレクトボックスのオプションとして月別アーカイブを表示しています。

まとめ

WordPressで動的なセレクトボックスを作成することは、サイトの使いやすさを向上させる上で非常に効果的です。カテゴリーや月別アーカイブのセレクトボックスを設置することで、訪問者が求めている情報に素早くアクセスできるようになります。