Как добавить доп.категорию для вывода?

G
На сайте с 24.11.2010
Offline
63
745

Всем привет!

В данный момент виджет выводит только одну категорию, нужно две и более. Что в коде добавить/исправить , чтобы получить желаемый результат? В админке подправил таблицу, теперь можно выделить две и более категории, но они не отображаются на сайте и при обновлении/сохранении виджете выбирается снова одна.

Код:

<?php

add_action('widgets_init', create_function('', 'return register_widget("DF_timeline");'));

class DF_timeline extends WP_Widget {
function DF_timeline() {
parent::__construct (false, $name = THEME_FULL_NAME.' '.esc_html__("Timeline", THEME_NAME));
}

function form($instance) {
/* Set up some default widget settings. */
$defaults = array(
'title' => esc_html__("Timeline", THEME_NAME),
'cat' => '',
'count' => '10',
);

$instance = wp_parse_args( (array) $instance, $defaults );

$title = $instance['title'];
$cat = $instance['cat'];
$count = $instance['count'];
?>
<p><label for="<?php echo esc_attr__($this->get_field_id('title')); ?>"><?php esc_html_e( 'Title:' , THEME_NAME );?> <input class="widefat" id="<?php echo esc_attr__($this->get_field_id('title')); ?>" name="<?php echo esc_attr__($this->get_field_name('title')); ?>" type="text" value="<?php echo esc_attr__($title); ?>" /></label></p>
<p><label for="<?php echo esc_attr__($this->get_field_id('cat')); ?>"><?php esc_html_e( 'Category:' , THEME_NAME );?>
<?php
$args = array(
'type' => 'post',
'child_of' => 0,
'orderby' => 'name',
'order' => 'ASC',
'hide_empty' => 1,
'hierarchical' => 1,
'taxonomy' => 'category');
$args = get_categories( $args );
?>
<select multiple="multiple" name="<?php echo esc_attr__($this->get_field_name('cat')); ?>" style="width: 100%; clear: both; margin: 0;">
<option value=""><?php esc_html_e("Latest News", THEME_NAME);?></option>
<?php foreach($args as $ar) { ?>
<option value="<?php echo esc_attr__($ar->term_id); ?>" <?php if($ar->term_id==$cat) {echo 'selected="selected"';} ?>><?php echo esc_html__($ar->cat_name); ?></option>
<?php } ?>
</select>

</label></p>
<p><label for="<?php echo esc_attr__($this->get_field_id('count')); ?>"><?php esc_html_e( 'Post count:' , THEME_NAME );?> <input class="widefat" id="<?php echo esc_attr__($this->get_field_id('count')); ?>" name="<?php echo esc_attr__($this->get_field_name('count')); ?>" type="text" value="<?php echo esc_attr__($count); ?>" /></label></p>


<?php
}

function update($new_instance, $old_instance) {
$instance = $old_instance;
$instance['title'] = strip_tags($new_instance['title']);
$instance['cat'] = strip_tags($new_instance['cat']);
$instance['count'] = strip_tags($new_instance['count']);

return $instance;
}

function widget($args, $instance) {
extract( $args );
$title = $instance['title'];
$count = $instance['count'];
$cat = $instance['cat'];



$args=array(
'cat'=> $cat,
'posts_per_page'=> $count,
'ignore_sticky_posts' => true
);

$the_query = new WP_Query($args);
$counter = 1;

$blogID = get_option('page_for_posts');

if($cat) {
$link = get_category_link( $cat );
$color = df_title_color($cat, 'category', false);
} else {
$link = get_page_link($blogID);
$color = df_title_color($blogID, 'page', false);
}

?>
<?php echo balanceTags($before_widget); ?>
<?php
if($title) {
echo balanceTags($before_title);
echo esc_html__($title);
echo balanceTags($after_title);
}
?>
<div class="tb_widget_timeline clearfix">
<?php if ($the_query->have_posts()) : while ($the_query->have_posts()) : $the_query->the_post(); ?>
<?php

//categories
$categories = get_the_category($the_query->post->ID);
$catCount = count($categories);
//select a random category id
$id = rand(0,$catCount-1);
if(isset($categories[$id]->term_id)) {
$titleColor = df_title_color($categories[$id]->term_id, "category", false);
} else {
$titleColor = df_get_option(THEME_NAME."_pageColorScheme");
}

?>
<!-- Article -->
<article>
<span class="date"><?php
echo get_post_meta($the_query->post->ID, '_custom_date_value_key', true);
?>
</span>
<div class="timeline_content">
<i class="fa fa-clock-o" style="color: <?php echo esc_attr__($titleColor);?>"></i>
<h3><a href="<?php the_permalink();?>"><?php the_title();?></a></h3>

<div class="text_map_marker"><?php
echo get_post_meta($the_query->post->ID, '_custom_date_value_site', true);
?>
</div>


</div>
</article><!-- End Article -->
<?php endwhile; else: ?>
<p><?php esc_html_e( 'No posts where found' , THEME_NAME);?></p>
<?php endif; ?>
</div>

<?php echo balanceTags($after_widget); ?>

<?php
}
}
?>

Скриншот:

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий