| 2 | | |
| 3 | | Replying to [ticket:32557 seeyouu]: |
| 4 | | > Dear Sir/Mdm, |
| 5 | | > |
| 6 | | > I'd recently installed a slider plugin called Slider WD [http://52.74.232.138/WordPress/wp-admin/plugin-install.php?tab=plugin-information&plugin=slider-wd&TB_iframe=true&width=600&height=550] into my wordpress version 4.2.2, and i found a problem which i can't add image into my slider. |
| 7 | | > |
| 8 | | > Once clicked "Add Image" button, it will show that Fatal error occured at wp-includes/functions.wp-scripts.php line 85, do_items is referred to a non-object. |
| 9 | | > |
| 10 | | > I did further study about the script and i found that probably a programming error under wp_print_scripts function which caused this issue. |
| 11 | | > |
| 12 | | > Below are the comparison of the same function under different version |
| 13 | | > version 4.2.2: |
| 14 | | > function wp_print_scripts( $handles = false ) { |
| 15 | | > /** |
| 16 | | > * Fires before scripts in the $handles queue are printed. |
| 17 | | > * |
| 18 | | > * @since 2.1.0 |
| 19 | | > */ |
| 20 | | > do_action( 'wp_print_scripts' ); |
| 21 | | > if ( '' === $handles ) { // for wp_head |
| 22 | | > $handles = false; |
| 23 | | > } |
| 24 | | > |
| 25 | | > _wp_scripts_maybe_doing_it_wrong( __FUNCTION__ ); |
| 26 | | > |
| 27 | | > global $wp_scripts; |
| 28 | | > if ( ! ( $wp_scripts instanceof WP_Scripts ) ) { |
| 29 | | > if ( ! $handles ) { |
| 30 | | > return array(); // No need to instantiate if nothing is there. |
| 31 | | > } |
| 32 | | > } |
| 33 | | > |
| 34 | | > return wp_scripts()->do_items( $handles ); |
| 35 | | > } |
| 36 | | > |
| 37 | | > Version 4.0.2: |
| 38 | | > function wp_print_scripts( $handles = false ) { |
| 39 | | > /** |
| 40 | | > * Fires before scripts in the $handles queue are printed. |
| 41 | | > * |
| 42 | | > * @since 2.1.0 |
| 43 | | > */ |
| 44 | | > do_action( 'wp_print_scripts' ); |
| 45 | | > if ( '' === $handles ) // for wp_head |
| 46 | | > $handles = false; |
| 47 | | > |
| 48 | | > global $wp_scripts; |
| 49 | | > if ( ! is_a( $wp_scripts, 'WP_Scripts' ) ) { |
| 50 | | > if ( ! did_action( 'init' ) ) |
| 51 | | > _doing_it_wrong( __FUNCTION__, sprintf( __( 'Scripts and styles should not be registered or enqueued until the %1$s, %2$s, or %3$s hooks.' ), |
| 52 | | > '<code>wp_enqueue_scripts</code>', '<code>admin_enqueue_scripts</code>', '<code>login_enqueue_scripts</code>' ), '3.3' ); |
| 53 | | > |
| 54 | | > if ( !$handles ) |
| 55 | | > return array(); // No need to instantiate if nothing is there. |
| 56 | | > else |
| 57 | | > $wp_scripts = new WP_Scripts(); |
| 58 | | > } |
| 59 | | > |
| 60 | | > return $wp_scripts->do_items( $handles ); |
| 61 | | > } |
| 62 | | > |
| 63 | | > under the condition if ( !$handles ), there's an else statement $wp_scripts = new WP_Scripts(); in version 4.0.2, however, version 4.2.2, this statement is missing. |