web-dev-qa-db-ja.com

wp_dropdown_categoriesの値を取得する方法

私はウィジェットを作っています、そしてそのウィジェットで wp_dropdown_categories() 関数を使いました。理解できないのは、ドロップダウンから選択した値を取得する方法です。

選択された変数はどの変数に格納されていますか?

$args = array('show_option_none' => 'No Category','hide_empty' => 0);
wp_dropdown_categories( $args );
4
Jamie

カテゴリは get_categories() function( wp_dropdown_categories() functionと同じカテゴリになります)で取得できますが、配列としてマークアップはありません。

値が 戻り値 であるため、カテゴリをループ処理してHTMLを自分で生成できます。

通常、このような構造を目指します。

<select name="categories">
  <option value="1">Category 1</option>
  <option value="2">Category 2</option>
  <option value="3">Category 3</option>
</select>

$categories配列をループすることでPHPを介して上から構造を生成します。

echo '<select name="categories">';

  // Get categories as array
  $categories = get_categories( $args );
  foreach ( $categories as $category ) :

    echo '<option value="' . $category->term_id . '">' . $category->name . '</option>';

  endforeach;

echo '</select>';

$argsパラメータで関数を自由に修正してください(参考のために Codex を見てください)。

<option>内にselected属性を追加する必要があるので、現在の$category->term_idとデータベース$stored_category_idに保存されているものを比較するために、短いifステートメントを介してこれを追加します。

$stored_category_id = 10; // This is the value from the database
$selected = ( $stored_category_id == $category->term_id  ) ? 'selected' : '';

以上です!あなたの完全なスニペット(おそらく最初にデフォルトのオプションがある)はこのようになっているはずです。

echo '<select name="categories">';
  // Add custom option as default
  echo '<option>' . __('No Category', 'text-domain') . '</option>';

  // Get categories as array
  $categories = get_categories( $args );
  foreach ( $categories as $category ) :

    // Check if current term ID is equal to term ID stored in database
    $selected = ( $stored_category_id ==  $category->term_id  ) ? 'selected' : '';

    echo '<option value="' . $category->term_id . '" ' . $selected . '>' . $category->name . '</option>';

  endforeach;

echo '</select>';

がんばろう! :)

7
Sven