私はウィジェットを作っています、そしてそのウィジェットで wp_dropdown_categories() 関数を使いました。理解できないのは、ドロップダウンから選択した値を取得する方法です。
選択された変数はどの変数に格納されていますか?
$args = array('show_option_none' => 'No Category','hide_empty' => 0);
wp_dropdown_categories( $args );
カテゴリは 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>';
がんばろう! :)