Bright Moon 653 ارسال شده در مرداد 92 گزارش بازنشر ارسال شده در مرداد 92 سلام.یک ویجت صفر رو در نظر بگیرید.توی function form یه input گذاشتم. با الگو گرفتن از طرز title input .حالا تو پنل ابزارک ها، توی این input هرچی میزارم و ذخیره میکنم، سیو نمیشه و میپره.کجای کار رو دارم اشتباه انجام میدم؟ نقل قول لینک به ارسال
imanfakhar 26231 ارسال شده در مرداد 92 گزارش بازنشر ارسال شده در مرداد 92 براش کلاس هم تعریف کردید؟ class My_Widget extends WP_Widget {public function __construct() { // widget actual processes}public function widget( $args, $instance ) { // outputs the content of the widget} public function form( $instance ) { // outputs the options form on admin}public function update( $new_instance, $old_instance ) { // processes widget options to be saved}}نمونه معرفی شده در وردپرس class Foo_Widget extends WP_Widget {/** * Register widget with WordPress. */function __construct() { parent::__construct( 'foo_widget', // Base ID 'Foo_Widget', // Name array( 'description' => __( 'A Foo Widget', 'text_domain' ), ) // Args );}/** * Front-end display of widget. * * @see WP_Widget::widget() * * @param array $args Widget arguments. * @param array $instance Saved values from database. */public function widget( $args, $instance ) { $title = apply_filters( 'widget_title', $instance['title'] ); echo $args['before_widget']; if ( ! empty( $title ) ) echo $args['before_title'] . $title . $args['after_title']; echo __( 'Hello, World!', 'text_domain' ); echo $args['after_widget'];}/** * Back-end widget form. * * @see WP_Widget::form() * * @param array $instance Previously saved values from database. */public function form( $instance ) { if ( isset( $instance[ 'title' ] ) ) { $title = $instance[ 'title' ]; } else { $title = __( 'New title', 'text_domain' ); } ?> <p> <label for="<?php echo $this->get_field_name( 'title' ); ?>"><?php _e( 'Title:' ); ?></label> <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> <?php}/** * Sanitize widget form values as they are saved. * * @see WP_Widget::update() * * @param array $new_instance Values just sent to be saved. * @param array $old_instance Previously saved values from database. * * @return array Updated safe values to be saved. */public function update( $new_instance, $old_instance ) { $instance = array(); $instance['title'] = ( ! empty( $new_instance['title'] ) ) ? strip_tags( $new_instance['title'] ) : ''; return $instance;}} // class Foo_Widget 3 نقل قول لینک به ارسال
Parsa 23463 ارسال شده در مرداد 92 گزارش بازنشر ارسال شده در مرداد 92 http://wp.tutsplus.com/tutorials/creative-coding/building-custom-wordpress-widgets/از چه کدی استفاده کردید؟ 2 نقل قول لینک به ارسال
Bright Moon 653 ارسال شده در مرداد 92 مالک گزارش بازنشر ارسال شده در مرداد 92 (ویرایش شده) بله از همون کلاس خود codex.wordpress.org استفاده کردم و همون مثال رو کمی تغییر دادم.الان با توجه به input تایتل، یه input دیگه میزارم. اما بعد از زدن دکمه ذخیره در پنل ابزارک های وردپرس، چیزی توش نمیمونه----------فکر کنم توی تعیین آرایه های قبل از ایجاد input ها مشکل دارم.ممکنه این قسمت رو توضیح بدین؟ ویرایش شده مرداد 92 توسط Light Moon نقل قول لینک به ارسال
imanfakhar 26231 ارسال شده در مرداد 92 گزارش بازنشر ارسال شده در مرداد 92 این قسمت را برای فیلد جدید تکرار کردید ؟if ( isset( $instance[ 'title' ] ) ) { $title = $instance[ 'title' ]; } else { $title = __( 'New title', 'text_domain' ); } 2 نقل قول لینک به ارسال
Bright Moon 653 ارسال شده در مرداد 92 مالک گزارش بازنشر ارسال شده در مرداد 92 الان کل بخش form به این شکل دراومده:public function form( $instance ) { if ( isset( $instance[ 'title' ] ) ) { $title = $instance[ 'title' ]; } else { $title = __( 'New title', 'text_domain' ); } ?> <p> <label for="<?php echo $this->get_field_name( 'title' ); ?>"><?php _e( 'Title:' ); ?></label> <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('banner_url'); ?>">آدرس بنر</label> <input class="widefat" id="<?php echo $this->get_field_id('banner_url'); ?>" name="<?php echo $this->get_field_name('banner_url'); ?>" value="<?php echo $instance['banner_url']; ?>" /> </p> <?php} نقل قول لینک به ارسال
imanfakhar 26231 ارسال شده در مرداد 92 گزارش بازنشر ارسال شده در مرداد 92 name="<?php echo $this->get_field_name( 'title' ); ?>"name="title" 2 نقل قول لینک به ارسال
imanfakhar 26231 ارسال شده در مرداد 92 گزارش بازنشر ارسال شده در مرداد 92 این رو هم دارید؟ function update( $new_instance, $old_instance ) { $instance = $old_instance; //Strip tags from title and name to remove HTML $instance['title'] = strip_tags( $new_instance['title'] ); return $instance;} 3 نقل قول لینک به ارسال
Bright Moon 653 ارسال شده در مرداد 92 مالک گزارش بازنشر ارسال شده در مرداد 92 با اضافه کردن کد توی بخش update مشکل ذخیره نشدن حل شد.آقا ایمان خیلی خیلی ممنون مشکل تایتل نبود، بخش های دیگه ای بود که خودم اضافه میکردم. که با این یاداوری متوجه اشتباه کار شدم 1 نقل قول لینک به ارسال
پست های پیشنهاد شده
به گفتگو بپیوندید
هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .