توسط
reza_yki
سلام من ابزارکی نوشتم که کاربر بتونه به وسیله select option به صورتی multi بتونه چندین دسته رو انتخاب کنه همه چیز درست و بدون مشکل کار میکنه فقط یه مشکل هست اونم اینه که وقتی ابزارک رو برای اولین بار فعال میکنی خطای زیر رو میده وباید یه دونه دسته رو انتخاب و ذخیره کنی تا ابزارک به صورت صحیح کارکنه لطفا راهنماییم کنید.
Warning: in_array() expects parameter 2 to be array, string given in E:\Program Files\xampp\htdocs\wordpress\wp-content\themes\mymag\functions\widgets\widgets.php on line 29
اینم سورس کد:
<?php
public function form( $instance ) {
$title = ! empty( $instance['title'] ) ? $instance['title'] : esc_html__( 'عنوان ابزارک', 'text_domain' );
$args = array(
'hide_empty' => 0,
'type' => 'post',
'taxonomy' => 'category',
'orderby' => 'name',
'hierarchical' => true,
);
$cats = get_categories( $args );
$instance['cat_id'] = isset( $instance['cat_id'] ) ? ( $instance['cat_id'] ) : '1';
$count_cat = isset ($instance['cat_id']) ? count($instance['cat_id']) : '1' ;
$tab_number = isset( $count_cat ) ? absint( $count_cat ) : 1;
?>
<p>
<label for="<?php echo $this->get_field_name( 'title' ); ?>"><?php _e( 'Title:' ); ?></label><br>
<input class="widefat" id="<?php echo $this->get_field_id( 'title' ); ?>" name="<?php echo $this->get_field_name( 'title' ); ?>" type="text" value="<?php echo esc_attr( $title ); ?>" />
</p>
<p>
<label for="<?php echo $this->get_field_id('tab_number'); ?>"><?php _e( 'تعداد زبانه:'); ?></label><br>
<input id="<?php echo $this->get_field_id('tab_number'); ?>" name="<?php echo $this->get_field_name('tab_number'); ?>" type="number" min="0" class="my_widget_number" value="<?php echo $tab_number; ?>" size="3" />
</p>
<label for="<?php echo $this->get_field_name( 'cat_id' ); ?>"><?php _e( 'انتخاب دسته بندی : ' ); ?></label>
<select id="<?php echo $this->get_field_id( 'cat_id' ); ?>" name="<?php echo $this->get_field_name( 'cat_id[]' ); ?>" multiple="multiple" style="width: 100%; margin: 10px auto; height: auto;">
<?php foreach( $cats as $cat ): ?>
<option value="<?php echo esc_attr(__($cat->term_id)); ?>"<?php selected(in_array($cat->term_id, $instance['cat_id'])); // selected($cat->term_id,$cats_id) ?>><?php echo esc_attr(__($cat->name)); ?></option>
<?php endforeach; ?>
</select>
<p>
<input type="text" value="<?php echo esc_attr(__(implode(',', $instance['cat_id']))); ?>">
</p>
<?php
}