رفتن به مطلب

مشکل در ابزارک اختصاصی


پست های پیشنهاد شده

سلام من ابزارکی نوشتم که کاربر بتونه به وسیله 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
    }

 

لینک به ارسال
در 8 ساعت قبل، 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 5.6 یا 7.0 امتحان کنید، نباید مشکلی باشه

ویرایش شده توسط nazanin123
لینک به ارسال

وقتی برای اولین بار فعال میکنید $instance['cat_id'] مقدار نداره به همین خاطر خطا میده

میتونین اون قسمت رو به صورت زیر بنویسین

 selected(in_array($cat->term_id, (empty($instance['cat_id'])?array():$instance['cat_id']) ) );

 

لینک به ارسال

مشکل شما مربوط به کد زیر هست:

<?php  selected(in_array($cat->term_id, $instance['cat_id']));  // selected($cat->term_id,$cats_id)  ?>

ارور نمایش داده به این دلیل هست که میگه باید پارامتر دوم in_array ، آرایه باشه !

 

لینک به ارسال
در 5 ساعت قبل، lord_viper گفته است :

وقتی برای اولین بار فعال میکنید $instance['cat_id'] مقدار نداره به همین خاطر خطا میده

میتونین اون قسمت رو به صورت زیر بنویسین


 selected(in_array($cat->term_id, (empty($instance['cat_id'])?array():$instance['cat_id']) ) );

 

بسیار ممنون مشکل حل شد به کمک شما

لینک به ارسال

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...