J'ai défini une catégorie de publication par défaut sous Paramètres -> Rédaction. J'ai une page d'accueil qui permet à l'utilisateur de créer son propre message. J'utilise le code suivant pour afficher les catégories dans un menu déroulant:
<?php
$args = array(
'type' => 'post',
'hide_empty' => 0
);
$categories = get_categories( $args );
?>
<select name="category_name">
<?php
foreach($categories as $category){
if ($category->name != 'Uncategorized') {
if($action=="edit"){
$selected_category = get_the_category($post_id);
$selected_category = $selected_category[0]->cat_name;
if($category->name==$selected_category){
echo '<option value="'.$category->term_id.'" selected> '.$category->name.'</option>';
}else{
echo '<option value="'.$category->term_id.'"> '.$category->name.'</option>';
}
}else{
echo '<option value="'.$category->term_id.'"> '.$category->name.'</option>';
}
}
}
?>
Cela fonctionne bien, mais j'aimerais définir la catégorie-> term_id comme étant sélectionnée lorsque cet ID est égal à la catégorie sélectionnée dans ma page de paramètres. Est-ce possible?
Merci!
Vous pouvez accéder à l'ID de catégorie par défaut via l'option default_category
:
$default_category = get_option('default_category');
Vous pouvez maintenant utiliser selected()
function pour générer l'attribut sélectionné:
<?php
$args = array(
'type' => 'post',
'hide_empty' => 0
);
$categories = get_categories( $args );
$default_category = get_option('default_category');
?>
<select name="category_name">
<?php
foreach($categories as $category){
if ($category->name != 'Uncategorized') {
if($action=="edit"){
$selected_category = get_the_category($post_id);
$selected_category = $selected_category[0]->cat_name;
if($category->name==$selected_category){
echo '<option value="'.$category->term_id.'" selected> '.$category->name.'</option>';
}else{
echo '<option value="'.$category->term_id.'"> '.$category->name.'</option>';
}
}else{
echo '<option value="'.$category->term_id.'" '. selected( $category->term_id, $default_category, false ) .'> '.$category->name.'</option>';
}
}
}
?>
Peut-être que vous souhaitez utiliser wp_dropdown_categories , ce qui peut simplifier votre code:
<?php
if( $action=="edit" ){
$selected_category = get_the_category( $post_id );
$selected_category = $selected_category[0]->term_id;
} else {
$selected_category = get_option('default_category');
}
$args = array(
'hide_empty' => 0,
'name' => 'category_name',
'selected' => $selected_category
);
wp_dropdown_categories( $args );
?>