Changeset 31223
- Timestamp:
- 01/17/2015 01:36:55 AM (10 years ago)
- Location:
- trunk
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/wp-includes/class.wp-scripts.php
r31189 r31223 96 96 $this->in_footer = array_diff( $this->in_footer, (array) $handle ); 97 97 98 if ( null === $this->registered[$handle]->ver ) 98 $obj = $this->registered[$handle]; 99 100 if ( null === $obj->ver ) { 99 101 $ver = ''; 100 else 101 $ver = $this->registered[$handle]->ver ? $this->registered[$handle]->ver : $this->default_version; 102 } else { 103 $ver = $obj->ver ? $obj->ver : $this->default_version; 104 } 102 105 103 106 if ( isset($this->args[$handle]) ) 104 107 $ver = $ver ? $ver . '&' . $this->args[$handle] : $this->args[$handle]; 105 108 106 $src = $this->registered[$handle]->src; 109 $src = $obj->src; 110 $cond_before = $cond_after = ''; 111 $conditional = isset( $obj->extra['conditional'] ) ? $obj->extra['conditional'] : ''; 112 113 if ( $conditional ) { 114 $cond_before = "<!--[if {$conditional}]>\n"; 115 $cond_after = "<![endif]-->\n"; 116 } 107 117 108 118 if ( $this->do_concat ) { … … 116 126 */ 117 127 $srce = apply_filters( 'script_loader_src', $src, $handle ); 118 if ( $this->in_default_dir( $srce)) {128 if ( $this->in_default_dir( $srce ) && ! $conditional ) { 119 129 $this->print_code .= $this->print_extra_script( $handle, false ); 120 130 $this->concat .= "$handle,"; … … 127 137 } 128 138 139 $has_conditional_data = $conditional && $this->get_data( $handle, 'data' ); 140 141 if ( $has_conditional_data ) { 142 echo $cond_before; 143 } 144 129 145 $this->print_extra_script( $handle ); 130 if ( !preg_match('|^(https?:)?//|', $src) && ! ( $this->content_url && 0 === strpos($src, $this->content_url) ) ) { 146 147 if ( $has_conditional_data ) { 148 echo $cond_after; 149 } 150 151 if ( ! preg_match( '|^(https?:)?//|', $src ) && ! ( $this->content_url && 0 === strpos( $src, $this->content_url ) ) ) { 131 152 $src = $this->base_url . $src; 132 153 } 133 154 134 if ( ! empty($ver) )135 $src = add_query_arg( 'ver', $ver, $src);155 if ( ! empty( $ver ) ) 156 $src = add_query_arg( 'ver', $ver, $src ); 136 157 137 158 /** This filter is documented in wp-includes/class.wp-scripts.php */ … … 141 162 return true; 142 163 143 $tag = " <script type='text/javascript' src='$src'></script>\n";164 $tag = "{$cond_before}<script type='text/javascript' src='$src'></script>\n{$cond_after}"; 144 165 145 166 /** -
trunk/src/wp-includes/functions.wp-scripts.php
r31202 r31223 272 272 return (bool) wp_scripts()->query( $handle, $list ); 273 273 } 274 275 /** 276 * Add metadata to a script. 277 * 278 * Works only if the script has already been added. 279 * 280 * Possible values for $key and $value: 281 * 'conditional' string Comments for IE 6, lte IE 7, etc. 282 * 283 * @see WP_Dependency::add_data() 284 * 285 * @since 4.2.0 286 * 287 * @param string $handle Name of the script. 288 * @param string $key Name of data point for which we're storing a value. 289 * @param mixed $value String containing the data to be added. 290 * @return bool True on success, false on failure. 291 */ 292 function wp_script_add_data( $handle, $key, $value ){ 293 global $wp_scripts; 294 return $wp_scripts->add_data( $handle, $key, $value ); 295 } -
trunk/tests/phpunit/tests/dependencies/scripts.php
r30517 r31223 85 85 $wp_scripts->base_url = $base_url_backup; 86 86 } 87 88 /** 89 * Testing add data & conditional 90 * @ticket 16024 91 */ 92 function test_wp_script_add_data() { 93 // Enqueue & add data 94 wp_enqueue_script( 'test-only-data', 'example.com', array(), null ); 95 wp_script_add_data( 'test-only-data', 'data', 'testing' ); 96 $expected = "<script type='text/javascript'>\n/* <![CDATA[ */\ntesting\n/* ]]> */\n</script>\n"; 97 $expected.= "<script type='text/javascript' src='http://example.com'></script>\n"; 98 99 // Enqueue & add conditional comments 100 wp_enqueue_script( 'test-only-conditional', 'example.com', array(), null ); 101 wp_script_add_data( 'test-only-conditional', 'conditional', 'gt IE 7' ); 102 $expected.= "<!--[if gt IE 7]>\n<script type='text/javascript' src='http://example.com'></script>\n<![endif]-->\n"; 103 104 // Enqueue & add data plus conditional comments for both 105 wp_enqueue_script( 'test-conditional-with-data', 'example.com', array(), null ); 106 wp_script_add_data( 'test-conditional-with-data', 'data', 'testing' ); 107 wp_script_add_data( 'test-conditional-with-data', 'conditional', 'lt IE 9' ); 108 $expected.= "<!--[if lt IE 9]>\n<script type='text/javascript'>\n/* <![CDATA[ */\ntesting\n/* ]]> */\n</script>\n<![endif]-->\n"; 109 $expected.= "<!--[if lt IE 9]>\n<script type='text/javascript' src='http://example.com'></script>\n<![endif]-->\n"; 110 111 // Enqueue & add an invalid key for brevity 112 wp_enqueue_script( 'test-invalid', 'example.com', array(), null ); 113 wp_script_add_data( 'test-invalid', 'invalid', 'testing' ); 114 $expected.= "<script type='text/javascript' src='http://example.com'></script>\n"; 115 116 // Go! 117 $this->assertEquals( $expected, get_echo( 'wp_print_scripts' ) ); 118 119 // No scripts left to print 120 $this->assertEquals( '', get_echo( 'wp_print_scripts' ) ); 121 } 87 122 }
Note: See TracChangeset
for help on using the changeset viewer.