Получить Категорию Публикации По Умолчанию Из Настроек


Я установил категорию записей по умолчанию в разделе Настройки -> Запись. У меня есть передняя страница, которая позволяет пользователю создавать свои собственные сообщения. Я использую следующий код для отображения категорий в раскрывающемся списке:

<?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>';
        }
    }
}
?>

Это работает нормально, но я хотел бы установить категорию->term_id как выбранный, когда этот идентификатор равен категории, выбранной на моей странице настроек. Возможно ли это?

Спасибо!

Author: user1048676, 2015-03-10

1 answers

Вы можете получить доступ к идентификатору категории по умолчанию с помощью опции default_category:

$default_category = get_option('default_category');

Теперь вы можете использовать selected() функция для создания выбранного атрибута:

<?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>';
        }
    }
}
?>

Возможно, вы хотите использовать wp_dropdown_categories, которые могут упростить ваш код:

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

?> 
 6
Author: cybmeta, 2015-03-10 09:04:57