WordPress.org

Make WordPress Core

Ticket #2525: theme-funcs.diff

File theme-funcs.diff, 24.1 KB (added by ryan, 12 years ago)

Moves template, stylesheet, theme fxns to theme.php

  • wp-includes/theme.php

     
     1<?php
     2/*
     3 * Theme/template/stylesheet functions. 
     4 */
     5
     6function get_stylesheet() {
     7        return apply_filters('stylesheet', get_settings('stylesheet'));
     8}
     9
     10function get_stylesheet_directory() {
     11        $stylesheet = get_stylesheet();
     12        $stylesheet_dir = get_theme_root() . "/$stylesheet";
     13        return apply_filters('stylesheet_directory', $stylesheet_dir, $stylesheet);
     14}
     15
     16function get_stylesheet_directory_uri() {
     17        $stylesheet = rawurlencode( get_stylesheet() );
     18        $stylesheet_dir_uri = get_theme_root_uri() . "/$stylesheet";
     19        return apply_filters('stylesheet_directory_uri', $stylesheet_dir_uri, $stylesheet);
     20}
     21
     22function get_stylesheet_uri() {
     23        $stylesheet_dir_uri = get_stylesheet_directory_uri();
     24        $stylesheet_uri = $stylesheet_dir_uri . "/style.css";
     25        return apply_filters('stylesheet_uri', $stylesheet_uri, $stylesheet_dir_uri);
     26}
     27
     28function get_template() {
     29        $template = get_settings('template');
     30        if (!file_exists(get_theme_root() . "/$template")) { //works for dirs too
     31                update_option('template', 'default');
     32                update_option('stylesheet', 'default');
     33        }
     34        return apply_filters('template', get_settings('template'));
     35}
     36
     37function get_template_directory() {
     38        $template = get_template();
     39        $template_dir = get_theme_root() . "/$template";
     40        return apply_filters('template_directory', $template_dir, $template);
     41}
     42
     43function get_template_directory_uri() {
     44        $template = get_template();
     45        $template_dir_uri = get_theme_root_uri() . "/$template";
     46        return apply_filters('template_directory_uri', $template_dir_uri, $template);
     47}
     48
     49function get_theme_data($theme_file) {
     50        $theme_data = implode('', file($theme_file));
     51        preg_match("|Theme Name:(.*)|i", $theme_data, $theme_name);
     52        preg_match("|Theme URI:(.*)|i", $theme_data, $theme_uri);
     53        preg_match("|Description:(.*)|i", $theme_data, $description);
     54        preg_match("|Author:(.*)|i", $theme_data, $author_name);
     55        preg_match("|Author URI:(.*)|i", $theme_data, $author_uri);
     56        preg_match("|Template:(.*)|i", $theme_data, $template);
     57        if ( preg_match("|Version:(.*)|i", $theme_data, $version) )
     58                $version = $version[1];
     59        else
     60                $version ='';
     61        if ( preg_match("|Status:(.*)|i", $theme_data, $status) )
     62                $status = $status[1];
     63        else
     64                $status ='publish';
     65
     66        $description = wptexturize($description[1]);
     67
     68        $name = $theme_name[1];
     69        $name = trim($name);
     70        $theme = $name;
     71
     72        if ( '' == $author_uri[1] ) {
     73                $author = $author_name[1];
     74        } else {
     75                $author = '<a href="' . $author_uri[1] . '" title="' . __('Visit author homepage') . '">' . $author_name[1] . '</a>';
     76        }
     77
     78        return array('Name' => $name, 'Title' => $theme, 'Description' => $description, 'Author' => $author, 'Version' => $version, 'Template' => $template[1], 'Status' => $status);
     79}
     80
     81function get_themes() {
     82        global $wp_themes;
     83        global $wp_broken_themes;
     84
     85        if ( isset($wp_themes) )
     86                return $wp_themes;
     87
     88        $themes = array();
     89        $wp_broken_themes = array();
     90        $theme_root = get_theme_root();
     91        $theme_loc = str_replace(ABSPATH, '', $theme_root);
     92
     93        // Files in wp-content/themes directory
     94        $themes_dir = @ dir($theme_root);
     95        if ( $themes_dir ) {
     96                while(($theme_dir = $themes_dir->read()) !== false) {
     97                        if ( is_dir($theme_root . '/' . $theme_dir) && is_readable($theme_root . '/' . $theme_dir) ) {
     98                                if ( $theme_dir{0} == '.' || $theme_dir == '..' || $theme_dir == 'CVS' ) {
     99                                        continue;
     100                                }
     101                                $stylish_dir = @ dir($theme_root . '/' . $theme_dir);
     102                                $found_stylesheet = false;
     103                                while (($theme_file = $stylish_dir->read()) !== false) {
     104                                        if ( $theme_file == 'style.css' ) {
     105                                                $theme_files[] = $theme_dir . '/' . $theme_file;
     106                                                $found_stylesheet = true;
     107                                                break;
     108                                        }
     109                                }
     110                                if ( !$found_stylesheet ) {
     111                                        $wp_broken_themes[$theme_dir] = array('Name' => $theme_dir, 'Title' => $theme_dir, 'Description' => __('Stylesheet is missing.'));
     112                                }
     113                        }
     114                }
     115        }
     116
     117        if ( !$themes_dir || !$theme_files ) {
     118                return $themes;
     119        }
     120
     121        sort($theme_files);
     122
     123        foreach($theme_files as $theme_file) {
     124                if ( ! is_readable("$theme_root/$theme_file") ) {
     125                        $wp_broken_themes[$theme_file] = array('Name' => $theme_file, 'Title' => $theme_file, 'Description' => __('File not readable.'));
     126                        continue;
     127                }
     128
     129                $theme_data = get_theme_data("$theme_root/$theme_file");
     130
     131                $name = $theme_data['Name'];
     132                $title = $theme_data['Title'];
     133                $description = wptexturize($theme_data['Description']);
     134                $version = $theme_data['Version'];
     135                $author = $theme_data['Author'];
     136                $template = $theme_data['Template'];
     137                $stylesheet = dirname($theme_file);
     138
     139                foreach (array('png', 'gif', 'jpg', 'jpeg') as $ext) {
     140                        if (file_exists("$theme_root/$stylesheet/screenshot.$ext")) {
     141                                $screenshot = "screenshot.$ext";
     142                                break;
     143                        }
     144                }
     145
     146                if ( empty($name) ) {
     147                        $name = dirname($theme_file);
     148                        $title = $name;
     149                }
     150
     151                if ( empty($template) ) {
     152                        if ( file_exists(dirname("$theme_root/$theme_file/index.php")) ) {
     153                                $template = dirname($theme_file);
     154                        } else {
     155                                continue;
     156                        }
     157                }
     158
     159                $template = trim($template);
     160
     161                if ( !file_exists("$theme_root/$template/index.php") ) {
     162                        $wp_broken_themes[$name] = array('Name' => $name, 'Title' => $title, 'Description' => __('Template is missing.'));
     163                        continue;
     164                }
     165
     166                $stylesheet_files = array();
     167                $stylesheet_dir = @ dir("$theme_root/$stylesheet");
     168                if ( $stylesheet_dir ) {
     169                        while(($file = $stylesheet_dir->read()) !== false) {
     170                                if ( !preg_match('|^\.+$|', $file) && preg_match('|\.css$|', $file) )
     171                                        $stylesheet_files[] = "$theme_loc/$stylesheet/$file";
     172                        }
     173                }
     174
     175                $template_files = array();
     176                $template_dir = @ dir("$theme_root/$template");
     177                if ( $template_dir ) {
     178                        while(($file = $template_dir->read()) !== false) {
     179                                if ( !preg_match('|^\.+$|', $file) && preg_match('|\.php$|', $file) )
     180                                        $template_files[] = "$theme_loc/$template/$file";
     181                        }
     182                }
     183
     184                $template_dir = dirname($template_files[0]);
     185                $stylesheet_dir = dirname($stylesheet_files[0]);
     186
     187                if ( empty($template_dir) )
     188                        $template_dir = '/';
     189                if ( empty($stylesheet_dir) )
     190                        $stylesheet_dir = '/';
     191
     192                // Check for theme name collision.  This occurs if a theme is copied to
     193                // a new theme directory and the theme header is not updated.  Whichever
     194                // theme is first keeps the name.  Subsequent themes get a suffix applied.
     195                // The Default and Classic themes always trump their pretenders.
     196                if ( isset($themes[$name]) ) {
     197                        if ( ('WordPress Default' == $name || 'WordPress Classic' == $name) &&
     198                                         ('default' == $stylesheet || 'classic' == $stylesheet) ) {
     199                                // If another theme has claimed to be one of our default themes, move
     200                                // them aside.
     201                                $suffix = $themes[$name]['Stylesheet'];
     202                                $new_name = "$name/$suffix";
     203                                $themes[$new_name] = $themes[$name];
     204                                $themes[$new_name]['Name'] = $new_name;
     205                        } else {
     206                                $name = "$name/$stylesheet";
     207                        }
     208                }
     209
     210                $themes[$name] = array('Name' => $name, 'Title' => $title, 'Description' => $description, 'Author' => $author, 'Version' => $version, 'Template' => $template, 'Stylesheet' => $stylesheet, 'Template Files' => $template_files, 'Stylesheet Files' => $stylesheet_files, 'Template Dir' => $template_dir, 'Stylesheet Dir' => $stylesheet_dir, 'Status' => $theme_data['Status'], 'Screenshot' => $screenshot);
     211        }
     212
     213        // Resolve theme dependencies.
     214        $theme_names = array_keys($themes);
     215
     216        foreach ($theme_names as $theme_name) {
     217                $themes[$theme_name]['Parent Theme'] = '';
     218                if ( $themes[$theme_name]['Stylesheet'] != $themes[$theme_name]['Template'] ) {
     219                        foreach ($theme_names as $parent_theme_name) {
     220                                if ( ($themes[$parent_theme_name]['Stylesheet'] == $themes[$parent_theme_name]['Template']) && ($themes[$parent_theme_name]['Template'] == $themes[$theme_name]['Template']) ) {
     221                                        $themes[$theme_name]['Parent Theme'] = $themes[$parent_theme_name]['Name'];
     222                                        break;
     223                                }
     224                        }
     225                }
     226        }
     227
     228        $wp_themes = $themes;
     229
     230        return $themes;
     231}
     232
     233function get_theme($theme) {
     234        $themes = get_themes();
     235
     236        if ( array_key_exists($theme, $themes) )
     237                return $themes[$theme];
     238
     239        return NULL;
     240}
     241
     242function get_current_theme() {
     243        $themes = get_themes();
     244        $theme_names = array_keys($themes);
     245        $current_template = get_settings('template');
     246        $current_stylesheet = get_settings('stylesheet');
     247        $current_theme = 'WordPress Default';
     248
     249        if ( $themes ) {
     250                foreach ($theme_names as $theme_name) {
     251                        if ( $themes[$theme_name]['Stylesheet'] == $current_stylesheet &&
     252                                        $themes[$theme_name]['Template'] == $current_template ) {
     253                                $current_theme = $themes[$theme_name]['Name'];
     254                                break;
     255                        }
     256                }
     257        }
     258
     259        return $current_theme;
     260}
     261
     262function get_theme_root() {
     263        return apply_filters('theme_root', ABSPATH . "wp-content/themes");
     264}
     265
     266function get_theme_root_uri() {
     267        return apply_filters('theme_root_uri', get_settings('siteurl') . "/wp-content/themes", get_settings('siteurl'));
     268}
     269
     270function get_query_template($type) {
     271        $template = '';
     272        if ( file_exists(TEMPLATEPATH . "/{$type}.php") )
     273                $template = TEMPLATEPATH . "/{$type}.php";
     274
     275        return apply_filters("{$type}_template", $template);
     276}
     277
     278function get_404_template() {
     279        return get_query_template('404');
     280}
     281
     282function get_archive_template() {
     283        return get_query_template('archive');
     284}
     285
     286function get_author_template() {
     287        return get_query_template('author');
     288}
     289
     290function get_category_template() {
     291        $template = '';
     292        if ( file_exists(TEMPLATEPATH . "/category-" . get_query_var('cat') . '.php') )
     293                $template = TEMPLATEPATH . "/category-" . get_query_var('cat') . '.php';
     294        else if ( file_exists(TEMPLATEPATH . "/category.php") )
     295                $template = TEMPLATEPATH . "/category.php";
     296
     297        return apply_filters('category_template', $template);
     298}
     299
     300function get_date_template() {
     301        return get_query_template('date');
     302}
     303
     304function get_home_template() {
     305        $template = '';
     306
     307        if ( file_exists(TEMPLATEPATH . "/home.php") )
     308                $template = TEMPLATEPATH . "/home.php";
     309        else if ( file_exists(TEMPLATEPATH . "/index.php") )
     310                $template = TEMPLATEPATH . "/index.php";
     311
     312        return apply_filters('home_template', $template);
     313}
     314
     315function get_page_template() {
     316        global $wp_query;
     317
     318        $id = $wp_query->post->ID;
     319        $template = get_post_meta($id, '_wp_page_template', true);
     320
     321        if ( 'default' == $template )
     322                $template = '';
     323
     324        if ( ! empty($template) && file_exists(TEMPLATEPATH . "/$template") )
     325                $template = TEMPLATEPATH . "/$template";
     326        else if ( file_exists(TEMPLATEPATH . "/page.php") )
     327                $template = TEMPLATEPATH . "/page.php";
     328        else
     329                $template = '';
     330
     331        return apply_filters('page_template', $template);
     332}
     333
     334function get_paged_template() {
     335        return get_query_template('paged');
     336}
     337
     338function get_search_template() {
     339        return get_query_template('search');
     340}
     341
     342function get_single_template() {
     343        return get_query_template('single');
     344}
     345
     346function get_attachment_template() {
     347        global $posts;
     348        $type = explode('/', $posts[0]->post_mime_type);
     349        if ( $template = get_query_template($type[0]) )
     350                return $template;
     351        elseif ( $template = get_query_template($type[1]) )
     352                return $template;
     353        elseif ( $template = get_query_template("$type[0]_$type[1]") )
     354                return $template;
     355        else
     356                return get_query_template('attachment');
     357}
     358
     359function get_comments_popup_template() {
     360        if ( file_exists( TEMPLATEPATH . '/comments-popup.php') )
     361                $template = TEMPLATEPATH . '/comments-popup.php';
     362        else
     363                $template = get_theme_root() . '/default/comments-popup.php';
     364
     365        return apply_filters('comments_popup_template', $template);
     366}
     367
     368function load_template($file) {
     369        global $posts, $post, $wp_did_header, $wp_did_template_redirect, $wp_query,
     370                $wp_rewrite, $wpdb, $wp_version, $wp, $id, $comment;
     371
     372        extract($wp_query->query_vars);
     373
     374        require_once($file);
     375}
     376
     377?>
  • wp-includes/functions.php

     
    14841484        do_action('wp_footer');
    14851485}
    14861486
    1487 function get_theme_root() {
    1488         return apply_filters('theme_root', ABSPATH . "wp-content/themes");
    1489 }
    1490 
    1491 function get_theme_root_uri() {
    1492         return apply_filters('theme_root_uri', get_settings('siteurl') . "/wp-content/themes", get_settings('siteurl'));
    1493 }
    1494 
    1495 function get_stylesheet() {
    1496         return apply_filters('stylesheet', get_settings('stylesheet'));
    1497 }
    1498 
    1499 function get_stylesheet_directory() {
    1500         $stylesheet = get_stylesheet();
    1501         $stylesheet_dir = get_theme_root() . "/$stylesheet";
    1502         return apply_filters('stylesheet_directory', $stylesheet_dir, $stylesheet);
    1503 }
    1504 
    1505 function get_stylesheet_directory_uri() {
    1506         $stylesheet = rawurlencode( get_stylesheet() );
    1507         $stylesheet_dir_uri = get_theme_root_uri() . "/$stylesheet";
    1508         return apply_filters('stylesheet_directory_uri', $stylesheet_dir_uri, $stylesheet);
    1509 }
    1510 
    1511 function get_stylesheet_uri() {
    1512         $stylesheet_dir_uri = get_stylesheet_directory_uri();
    1513         $stylesheet_uri = $stylesheet_dir_uri . "/style.css";
    1514         return apply_filters('stylesheet_uri', $stylesheet_uri, $stylesheet_dir_uri);
    1515 }
    1516 
    1517 function get_template() {
    1518         $template = get_settings('template');
    1519         if (!file_exists(get_theme_root() . "/$template")) { //works for dirs too
    1520                 update_option('template', 'default');
    1521                 update_option('stylesheet', 'default');
    1522         }
    1523         return apply_filters('template', get_settings('template'));
    1524 }
    1525 
    1526 function get_template_directory() {
    1527         $template = get_template();
    1528         $template_dir = get_theme_root() . "/$template";
    1529         return apply_filters('template_directory', $template_dir, $template);
    1530 }
    1531 
    1532 function get_template_directory_uri() {
    1533         $template = get_template();
    1534         $template_dir_uri = get_theme_root_uri() . "/$template";
    1535         return apply_filters('template_directory_uri', $template_dir_uri, $template);
    1536 }
    1537 
    1538 function get_theme_data($theme_file) {
    1539         $theme_data = implode('', file($theme_file));
    1540         preg_match("|Theme Name:(.*)|i", $theme_data, $theme_name);
    1541         preg_match("|Theme URI:(.*)|i", $theme_data, $theme_uri);
    1542         preg_match("|Description:(.*)|i", $theme_data, $description);
    1543         preg_match("|Author:(.*)|i", $theme_data, $author_name);
    1544         preg_match("|Author URI:(.*)|i", $theme_data, $author_uri);
    1545         preg_match("|Template:(.*)|i", $theme_data, $template);
    1546         if ( preg_match("|Version:(.*)|i", $theme_data, $version) )
    1547                 $version = $version[1];
    1548         else
    1549                 $version ='';
    1550         if ( preg_match("|Status:(.*)|i", $theme_data, $status) )
    1551                 $status = $status[1];
    1552         else
    1553                 $status ='publish';
    1554 
    1555         $description = wptexturize($description[1]);
    1556 
    1557         $name = $theme_name[1];
    1558         $name = trim($name);
    1559         $theme = $name;
    1560 
    1561         if ( '' == $author_uri[1] ) {
    1562                 $author = $author_name[1];
    1563         } else {
    1564                 $author = '<a href="' . $author_uri[1] . '" title="' . __('Visit author homepage') . '">' . $author_name[1] . '</a>';
    1565         }
    1566 
    1567         return array('Name' => $name, 'Title' => $theme, 'Description' => $description, 'Author' => $author, 'Version' => $version, 'Template' => $template[1], 'Status' => $status);
    1568 }
    1569 
    1570 function get_themes() {
    1571         global $wp_themes;
    1572         global $wp_broken_themes;
    1573 
    1574         if ( isset($wp_themes) )
    1575                 return $wp_themes;
    1576 
    1577         $themes = array();
    1578         $wp_broken_themes = array();
    1579         $theme_root = get_theme_root();
    1580         $theme_loc = str_replace(ABSPATH, '', $theme_root);
    1581 
    1582         // Files in wp-content/themes directory
    1583         $themes_dir = @ dir($theme_root);
    1584         if ( $themes_dir ) {
    1585                 while(($theme_dir = $themes_dir->read()) !== false) {
    1586                         if ( is_dir($theme_root . '/' . $theme_dir) && is_readable($theme_root . '/' . $theme_dir) ) {
    1587                                 if ( $theme_dir{0} == '.' || $theme_dir == '..' || $theme_dir == 'CVS' ) {
    1588                                         continue;
    1589                                 }
    1590                                 $stylish_dir = @ dir($theme_root . '/' . $theme_dir);
    1591                                 $found_stylesheet = false;
    1592                                 while (($theme_file = $stylish_dir->read()) !== false) {
    1593                                         if ( $theme_file == 'style.css' ) {
    1594                                                 $theme_files[] = $theme_dir . '/' . $theme_file;
    1595                                                 $found_stylesheet = true;
    1596                                                 break;
    1597                                         }
    1598                                 }
    1599                                 if ( !$found_stylesheet ) {
    1600                                         $wp_broken_themes[$theme_dir] = array('Name' => $theme_dir, 'Title' => $theme_dir, 'Description' => __('Stylesheet is missing.'));
    1601                                 }
    1602                         }
    1603                 }
    1604         }
    1605 
    1606         if ( !$themes_dir || !$theme_files ) {
    1607                 return $themes;
    1608         }
    1609 
    1610         sort($theme_files);
    1611 
    1612         foreach($theme_files as $theme_file) {
    1613                 if ( ! is_readable("$theme_root/$theme_file") ) {
    1614                         $wp_broken_themes[$theme_file] = array('Name' => $theme_file, 'Title' => $theme_file, 'Description' => __('File not readable.'));
    1615                         continue;
    1616                 }
    1617 
    1618                 $theme_data = get_theme_data("$theme_root/$theme_file");
    1619 
    1620                 $name = $theme_data['Name'];
    1621                 $title = $theme_data['Title'];
    1622                 $description = wptexturize($theme_data['Description']);
    1623                 $version = $theme_data['Version'];
    1624                 $author = $theme_data['Author'];
    1625                 $template = $theme_data['Template'];
    1626                 $stylesheet = dirname($theme_file);
    1627 
    1628                 foreach (array('png', 'gif', 'jpg', 'jpeg') as $ext) {
    1629                         if (file_exists("$theme_root/$stylesheet/screenshot.$ext")) {
    1630                                 $screenshot = "screenshot.$ext";
    1631                                 break;
    1632                         }
    1633                 }
    1634 
    1635                 if ( empty($name) ) {
    1636                         $name = dirname($theme_file);
    1637                         $title = $name;
    1638                 }
    1639 
    1640                 if ( empty($template) ) {
    1641                         if ( file_exists(dirname("$theme_root/$theme_file/index.php")) ) {
    1642                                 $template = dirname($theme_file);
    1643                         } else {
    1644                                 continue;
    1645                         }
    1646                 }
    1647 
    1648                 $template = trim($template);
    1649 
    1650                 if ( !file_exists("$theme_root/$template/index.php") ) {
    1651                         $wp_broken_themes[$name] = array('Name' => $name, 'Title' => $title, 'Description' => __('Template is missing.'));
    1652                         continue;
    1653                 }
    1654 
    1655                 $stylesheet_files = array();
    1656                 $stylesheet_dir = @ dir("$theme_root/$stylesheet");
    1657                 if ( $stylesheet_dir ) {
    1658                         while(($file = $stylesheet_dir->read()) !== false) {
    1659                                 if ( !preg_match('|^\.+$|', $file) && preg_match('|\.css$|', $file) )
    1660                                         $stylesheet_files[] = "$theme_loc/$stylesheet/$file";
    1661                         }
    1662                 }
    1663 
    1664                 $template_files = array();
    1665                 $template_dir = @ dir("$theme_root/$template");
    1666                 if ( $template_dir ) {
    1667                         while(($file = $template_dir->read()) !== false) {
    1668                                 if ( !preg_match('|^\.+$|', $file) && preg_match('|\.php$|', $file) )
    1669                                         $template_files[] = "$theme_loc/$template/$file";
    1670                         }
    1671                 }
    1672 
    1673                 $template_dir = dirname($template_files[0]);
    1674                 $stylesheet_dir = dirname($stylesheet_files[0]);
    1675 
    1676                 if ( empty($template_dir) )
    1677                         $template_dir = '/';
    1678                 if ( empty($stylesheet_dir) )
    1679                         $stylesheet_dir = '/';
    1680 
    1681                 // Check for theme name collision.  This occurs if a theme is copied to
    1682                 // a new theme directory and the theme header is not updated.  Whichever
    1683                 // theme is first keeps the name.  Subsequent themes get a suffix applied.
    1684                 // The Default and Classic themes always trump their pretenders.
    1685                 if ( isset($themes[$name]) ) {
    1686                         if ( ('WordPress Default' == $name || 'WordPress Classic' == $name) &&
    1687                                          ('default' == $stylesheet || 'classic' == $stylesheet) ) {
    1688                                 // If another theme has claimed to be one of our default themes, move
    1689                                 // them aside.
    1690                                 $suffix = $themes[$name]['Stylesheet'];
    1691                                 $new_name = "$name/$suffix";
    1692                                 $themes[$new_name] = $themes[$name];
    1693                                 $themes[$new_name]['Name'] = $new_name;
    1694                         } else {
    1695                                 $name = "$name/$stylesheet";
    1696                         }
    1697                 }
    1698 
    1699                 $themes[$name] = array('Name' => $name, 'Title' => $title, 'Description' => $description, 'Author' => $author, 'Version' => $version, 'Template' => $template, 'Stylesheet' => $stylesheet, 'Template Files' => $template_files, 'Stylesheet Files' => $stylesheet_files, 'Template Dir' => $template_dir, 'Stylesheet Dir' => $stylesheet_dir, 'Status' => $theme_data['Status'], 'Screenshot' => $screenshot);
    1700         }
    1701 
    1702         // Resolve theme dependencies.
    1703         $theme_names = array_keys($themes);
    1704 
    1705         foreach ($theme_names as $theme_name) {
    1706                 $themes[$theme_name]['Parent Theme'] = '';
    1707                 if ( $themes[$theme_name]['Stylesheet'] != $themes[$theme_name]['Template'] ) {
    1708                         foreach ($theme_names as $parent_theme_name) {
    1709                                 if ( ($themes[$parent_theme_name]['Stylesheet'] == $themes[$parent_theme_name]['Template']) && ($themes[$parent_theme_name]['Template'] == $themes[$theme_name]['Template']) ) {
    1710                                         $themes[$theme_name]['Parent Theme'] = $themes[$parent_theme_name]['Name'];
    1711                                         break;
    1712                                 }
    1713                         }
    1714                 }
    1715         }
    1716 
    1717         $wp_themes = $themes;
    1718 
    1719         return $themes;
    1720 }
    1721 
    1722 function get_theme($theme) {
    1723         $themes = get_themes();
    1724 
    1725         if ( array_key_exists($theme, $themes) )
    1726                 return $themes[$theme];
    1727 
    1728         return NULL;
    1729 }
    1730 
    1731 function get_current_theme() {
    1732         $themes = get_themes();
    1733         $theme_names = array_keys($themes);
    1734         $current_template = get_settings('template');
    1735         $current_stylesheet = get_settings('stylesheet');
    1736         $current_theme = 'WordPress Default';
    1737 
    1738         if ( $themes ) {
    1739                 foreach ($theme_names as $theme_name) {
    1740                         if ( $themes[$theme_name]['Stylesheet'] == $current_stylesheet &&
    1741                                         $themes[$theme_name]['Template'] == $current_template ) {
    1742                                 $current_theme = $themes[$theme_name]['Name'];
    1743                                 break;
    1744                         }
    1745                 }
    1746         }
    1747 
    1748         return $current_theme;
    1749 }
    1750 
    1751 function get_query_template($type) {
    1752         $template = '';
    1753         if ( file_exists(TEMPLATEPATH . "/{$type}.php") )
    1754                 $template = TEMPLATEPATH . "/{$type}.php";
    1755 
    1756         return apply_filters("{$type}_template", $template);
    1757 }
    1758 
    1759 function get_404_template() {
    1760         return get_query_template('404');
    1761 }
    1762 
    1763 function get_archive_template() {
    1764         return get_query_template('archive');
    1765 }
    1766 
    1767 function get_author_template() {
    1768         return get_query_template('author');
    1769 }
    1770 
    1771 function get_category_template() {
    1772         $template = '';
    1773         if ( file_exists(TEMPLATEPATH . "/category-" . get_query_var('cat') . '.php') )
    1774                 $template = TEMPLATEPATH . "/category-" . get_query_var('cat') . '.php';
    1775         else if ( file_exists(TEMPLATEPATH . "/category.php") )
    1776                 $template = TEMPLATEPATH . "/category.php";
    1777 
    1778         return apply_filters('category_template', $template);
    1779 }
    1780 
    1781 function get_date_template() {
    1782         return get_query_template('date');
    1783 }
    1784 
    1785 function get_home_template() {
    1786         $template = '';
    1787 
    1788         if ( file_exists(TEMPLATEPATH . "/home.php") )
    1789                 $template = TEMPLATEPATH . "/home.php";
    1790         else if ( file_exists(TEMPLATEPATH . "/index.php") )
    1791                 $template = TEMPLATEPATH . "/index.php";
    1792 
    1793         return apply_filters('home_template', $template);
    1794 }
    1795 
    1796 function get_page_template() {
    1797         global $wp_query;
    1798 
    1799         $id = $wp_query->post->ID;
    1800         $template = get_post_meta($id, '_wp_page_template', true);
    1801 
    1802         if ( 'default' == $template )
    1803                 $template = '';
    1804 
    1805         if ( ! empty($template) && file_exists(TEMPLATEPATH . "/$template") )
    1806                 $template = TEMPLATEPATH . "/$template";
    1807         else if ( file_exists(TEMPLATEPATH . "/page.php") )
    1808                 $template = TEMPLATEPATH . "/page.php";
    1809         else
    1810                 $template = '';
    1811 
    1812         return apply_filters('page_template', $template);
    1813 }
    1814 
    1815 function get_paged_template() {
    1816         return get_query_template('paged');
    1817 }
    1818 
    1819 function get_search_template() {
    1820         return get_query_template('search');
    1821 }
    1822 
    1823 function get_single_template() {
    1824         return get_query_template('single');
    1825 }
    1826 
    1827 function get_attachment_template() {
    1828         global $posts;
    1829         $type = explode('/', $posts[0]->post_mime_type);
    1830         if ( $template = get_query_template($type[0]) )
    1831                 return $template;
    1832         elseif ( $template = get_query_template($type[1]) )
    1833                 return $template;
    1834         elseif ( $template = get_query_template("$type[0]_$type[1]") )
    1835                 return $template;
    1836         else
    1837                 return get_query_template('attachment');
    1838 }
    1839 
    1840 function get_comments_popup_template() {
    1841         if ( file_exists( TEMPLATEPATH . '/comments-popup.php') )
    1842                 $template = TEMPLATEPATH . '/comments-popup.php';
    1843         else
    1844                 $template = get_theme_root() . '/default/comments-popup.php';
    1845 
    1846         return apply_filters('comments_popup_template', $template);
    1847 }
    1848 
    18491487// Borrowed from the PHP Manual user notes. Convert entities, while
    18501488// preserving already-encoded entities:
    18511489function htmlentities2($myHTML) {
     
    19191557        return add_query_arg($key, '', $query);
    19201558}
    19211559
    1922 function load_template($file) {
    1923         global $posts, $post, $wp_did_header, $wp_did_template_redirect, $wp_query,
    1924                 $wp_rewrite, $wpdb, $wp_version, $wp, $id, $comment;
    1925 
    1926         extract($wp_query->query_vars);
    1927 
    1928         require_once($file);
    1929 }
    1930 
    19311560function add_magic_quotes($array) {
    19321561        global $wpdb;
    19331562
  • wp-settings.php

     
    132132require (ABSPATH . WPINC . '/capabilities.php');
    133133require (ABSPATH . WPINC . '/classes.php');
    134134require (ABSPATH . WPINC . '/query.php');
     135require (ABSPATH . WPINC . '/theme.php');
    135136require (ABSPATH . WPINC . '/template-functions-general.php');
    136137require (ABSPATH . WPINC . '/template-functions-links.php');
    137138require (ABSPATH . WPINC . '/template-functions-author.php');