Make WordPress Core

Changeset 3711


Ignore:
Timestamp:
04/18/2006 04:44:33 AM (18 years ago)
Author:
ryan
Message:

Move theme functions to theme.php. #2525

Location:
trunk
Files:
1 added
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/wp-includes/functions.php

    r3704 r3711  
    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:
     
    19181556function remove_query_arg($key, $query) {
    19191557    return add_query_arg($key, '', $query);
    1920 }
    1921 
    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);
    19291558}
    19301559
  • trunk/wp-settings.php

    r3685 r3711  
    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');
Note: See TracChangeset for help on using the changeset viewer.