Ticket #17597: get_raw_theme_root.diff
File get_raw_theme_root.diff, 3.1 KB (added by , 13 years ago) |
---|
-
wp-includes/theme.php
475 475 global $wp_theme_directories; 476 476 477 477 if ( count($wp_theme_directories) <= 1 ) 478 return '/themes';478 return get_theme_root(); 479 479 480 480 $theme_roots = get_site_transient( 'theme_roots' ); 481 481 if ( false === $theme_roots ) { … … 547 547 * @param string $directory Either the full filesystem path to a theme folder or a folder within WP_CONTENT_DIR 548 548 * @return bool 549 549 */ 550 function register_theme_directory( $directory ) {550 function register_theme_directory( $directory ) { 551 551 global $wp_theme_directories; 552 552 553 /* If this folder does not exist, return and do not register */ 554 if ( !file_exists( $directory ) ) 555 /* Try prepending as the theme directory could be relative to the content directory */ 556 $registered_directory = WP_CONTENT_DIR . '/' . $directory; 557 else 558 $registered_directory = $directory; 553 if ( ! file_exists( $directory ) ) { 554 // Try prepending as the theme directory could be relative to the content directory 555 $directory = WP_CONTENT_DIR . '/' . $directory; 556 // If this directory does not exist, return and do not register 557 if ( ! file_exists( $directory ) ) 558 return false; 559 } 559 560 560 /* If this folder does not exist, return and do not register */ 561 if ( !file_exists( $registered_directory ) ) 562 return false; 561 $wp_theme_directories[] = $directory; 563 562 564 $wp_theme_directories[] = $registered_directory;565 566 563 return true; 567 564 } 568 565 … … 660 657 * @return string Theme path. 661 658 */ 662 659 function get_theme_root( $stylesheet_or_template = false ) { 663 if ( $stylesheet_or_template ) { 664 if ( $theme_root = get_raw_theme_root($stylesheet_or_template) ) 665 $theme_root = WP_CONTENT_DIR . $theme_root; 666 else 667 $theme_root = WP_CONTENT_DIR . '/themes'; 668 } else { 660 if ( $stylesheet_or_template && $theme_root = get_raw_theme_root( $stylesheet_or_template ) ) 661 $theme_root = $theme_root; 662 else 669 663 $theme_root = WP_CONTENT_DIR . '/themes'; 670 }671 664 672 665 return apply_filters( 'theme_root', $theme_root ); 673 666 } … … 685 678 function get_theme_root_uri( $stylesheet_or_template = false ) { 686 679 if ( $stylesheet_or_template ) { 687 680 if ( $theme_root = get_raw_theme_root($stylesheet_or_template) ) 688 $theme_root_uri = content_url( $theme_root);681 $theme_root_uri = content_url( str_replace( WP_CONTENT_DIR, '', $theme_root ) ); 689 682 else 690 683 $theme_root_uri = content_url( 'themes' ); 691 684 } else { … … 696 689 } 697 690 698 691 /** 699 * Get the raw theme root relative to the content directorywith no filters applied.692 * Get the raw theme root with no filters applied. 700 693 * 701 694 * @since 3.1.0 702 695 * 696 * Before 3.4.0, this incorrectly returned a path relative to the content directory ("/themes") when 697 * only one theme directory was registered. Absolute paths are now always returned. 698 * 703 699 * @param string $stylesheet_or_template The stylesheet or template name of the theme 704 700 * @return string Theme root 705 701 */ … … 707 703 global $wp_theme_directories; 708 704 709 705 if ( count($wp_theme_directories) <= 1 ) 710 return '/themes';706 return WP_CONTENT_DIR . '/themes'; 711 707 712 708 $theme_root = false; 713 709