web-dev-qa-db-fra.com

Obtenir les catégories de publication par défaut à partir des paramètres

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!

1
user1048676

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 );

?> 
4
cybmeta