Zu beachten wäre noch, dass Du in der zweiten Zeile auf [FONT=Courier New]$options[..][/FONT] zugreifst, die Variable aber dort noch nicht existiert, diese Zeile ist im aktuellen Code überflüssig. Weiterhin kann/sollte man immer gleiche Zugriffe auf gespeicherte Werte besser ausserhalb der Schleife vornehmen. Weiterhin könnte man auch die in WordPress eingebaute [FONT=Courier New]selected(..)[/FONT] Funktion verwenden, dann sähe der Code z.B. so aus (ungetestet):
<select name="cr_theme_options[featuredCategoryHome]">
<option value=""><?php echo esc_attr( __( 'Featured Kategorie wählen' ) ); ?></option>
<?php
$options = get_option('cr_theme_options');
$cat_options_id = $options['featuredCategoryHome'];
$categories = get_categories();
foreach ( $categories as $category ) {
$option = '<option' . selected( $cat_options_id, $category->term_id, false ) . ' value="' . $category->term_id . '">';
$option .= $category->cat_name;
$option .= '</option>';
echo $option;
}
?>
</select>
Alles anzeigen
Und weiterhin könnte man noch Error Checking einfügen, um sicherzustellen, dass die entspr. Werte vorhanden sind, und dazu Escaping der Ausgaben, mit [FONT=Courier New]esc_html()[/FONT] bzw. [FONT=Courier New]esc_attr()[/FONT], dann sähe der Code z.B. so aus (ungetestet):
<select name="cr_theme_options[featuredCategoryHome]">
<option value=""><?php echo esc_attr( __( 'Featured Kategorie wählen' ) ); ?></option>
<?php
$options = get_option('cr_theme_options');
if ( !empty( $options) && isset( $options['featuredCategoryHome'] ) ) {
$cat_options_id = $options['featuredCategoryHome'];
$categories = get_categories();
foreach ( $categories as $category ) {
$option = '<option' . selected( $cat_options_id, $category->term_id, false ) . ' value="' . esc_attr( $category->term_id ) . '">';
$option .= esc_html( $category->cat_name );
$option .= '</option>';
echo $option;
}
}
?>
</select>
Alles anzeigen