diff --git wp-includes/functions.php wp-includes/functions.php
index c4dc1e7..c9f45f3 100644
|
|
function path_join( $base, $path ) { |
1429 | 1429 | } |
1430 | 1430 | |
1431 | 1431 | /** |
| 1432 | * Normalize a filesystem path. |
| 1433 | * |
| 1434 | * Replaces backslashes with forward slashes for Windows systems, |
| 1435 | * and ensures no duplicate slashes exist. |
| 1436 | * |
| 1437 | * @param string $path Path to normalize. |
| 1438 | * @return string Normalized path. |
| 1439 | */ |
| 1440 | function wp_normalize_path( $path ) { |
| 1441 | $path = str_replace( '\\', '/', $path ); |
| 1442 | $path = preg_replace( '|/+|','/', $path ); |
| 1443 | return $path; |
| 1444 | } |
| 1445 | |
| 1446 | /** |
1432 | 1447 | * Determines a writable directory for temporary files. |
1433 | 1448 | * Function's preference is the return value of <code>sys_get_temp_dir()</code>, |
1434 | 1449 | * followed by your PHP temporary upload directory, followed by WP_CONTENT_DIR, |
diff --git wp-includes/plugin.php wp-includes/plugin.php
index 03c4ac3..c8029f4 100644
|
|
function remove_all_actions($tag, $priority = false) { |
574 | 574 | * @uses WP_PLUGIN_DIR |
575 | 575 | */ |
576 | 576 | function plugin_basename($file) { |
577 | | $file = str_replace('\\','/',$file); // sanitize for Win32 installs |
578 | | $file = preg_replace('|/+|','/', $file); // remove any duplicate slash |
579 | | $plugin_dir = str_replace('\\','/',WP_PLUGIN_DIR); // sanitize for Win32 installs |
580 | | $plugin_dir = preg_replace('|/+|','/', $plugin_dir); // remove any duplicate slash |
581 | | $mu_plugin_dir = str_replace('\\','/',WPMU_PLUGIN_DIR); // sanitize for Win32 installs |
582 | | $mu_plugin_dir = preg_replace('|/+|','/', $mu_plugin_dir); // remove any duplicate slash |
| 577 | global $wp_plugin_paths; |
| 578 | $original_file = $file; |
| 579 | |
| 580 | foreach ($wp_plugin_paths as $dir => $realdir) { |
| 581 | if (strpos($file, $realdir) === 0) { |
| 582 | $file = $dir . substr( $file, strlen( $realdir ) ); |
| 583 | } |
| 584 | } |
| 585 | |
| 586 | $file = wp_normalize_path($file); |
| 587 | $plugin_dir = wp_normalize_path( WP_PLUGIN_DIR ); |
| 588 | $mu_plugin_dir = wp_normalize_path( WPMU_PLUGIN_DIR ); |
| 589 | |
583 | 590 | $file = preg_replace('#^' . preg_quote($plugin_dir, '#') . '/|^' . preg_quote($mu_plugin_dir, '#') . '/#','',$file); // get relative path from plugins dir |
584 | 591 | $file = trim($file, '/'); |
585 | | return $file; |
| 592 | |
| 593 | /** |
| 594 | * Filter the plugin's basename. |
| 595 | * |
| 596 | * @since 3.7.0 |
| 597 | * |
| 598 | * @param string $file Resolved basename. |
| 599 | * @param string $original_file Filename passed into the function. |
| 600 | */ |
| 601 | return apply_filters( 'plugin_basename', $file, $original_file ); |
586 | 602 | } |
587 | 603 | |
588 | 604 | /** |
diff --git wp-settings.php wp-settings.php
index 24aee93..2618326 100644
|
|
create_initial_post_types(); |
194 | 194 | register_theme_directory( get_theme_root() ); |
195 | 195 | |
196 | 196 | // Load active plugins. |
197 | | foreach ( wp_get_active_and_valid_plugins() as $plugin ) |
| 197 | $wp_plugin_paths = array(); |
| 198 | foreach ( wp_get_active_and_valid_plugins() as $plugin ) { |
| 199 | $plugin_path = wp_normalize_path( dirname( $plugin ) ); |
| 200 | $plugin_realpath = wp_normalize_path( dirname( realpath( $plugin ) ) ); |
| 201 | |
| 202 | if ( $plugin_path !== $plugin_realpath ) { |
| 203 | $wp_plugin_paths[ $plugin_path ] = $plugin_realpath; |
| 204 | } |
| 205 | |
198 | 206 | include_once( $plugin ); |
199 | | unset( $plugin ); |
| 207 | } |
| 208 | unset( $plugin, $plugin_path, $plugin_realpath ); |
200 | 209 | |
201 | 210 | // Load pluggable functions. |
202 | 211 | require( ABSPATH . WPINC . '/pluggable.php' ); |