Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Newer
Older
100644 289 lines (227 sloc) 11.908 kb
0586624 Importing the initial Hybrid Core files and folders.
greenshady authored
1 <?php
2 /**
9337d50 Documentation updates.
greenshady authored
3 * Hybrid Core - A WordPress theme development framework.
4 *
3594f29 Documentation updates galore.
greenshady authored
5 * Hybrid Core is a framework for developing WordPress themes. The framework allows theme developers
6 * to quickly build themes without having to handle all of the "logic" behind the theme or having to code
7 * complex functionality for features that are often needed in themes. The framework does these things
8 * for developers to allow them to get back to what matters the most: developing and designing themes.
9 * The framework was built to make it easy for developers to include (or not include) specific, pre-coded
10 * features. Themes handle all the markup, style, and scripts while the framework handles the logic.
a84cd56 Update the license info specifically for the framework.
greenshady authored
11 *
977325b Final (hopefully) update of the core Hybrid class to get the method l…
greenshady authored
12 * Hybrid Core is a modular system, which means that developers can pick and choose the features they
13 * want to include within their themes. Most files are only loaded if the theme registers support for the
14 * feature using the add_theme_support( $feature ) function within their theme.
15 *
3594f29 Documentation updates galore.
greenshady authored
16 * This program is free software; you can redistribute it and/or modify it under the terms of the GNU
17 * General Public License version 2, as published by the Free Software Foundation. You may NOT assume
18 * that you can use any other version of the GPL.
a84cd56 Update the license info specifically for the framework.
greenshady authored
19 *
3594f29 Documentation updates galore.
greenshady authored
20 * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
21 * even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
a84cd56 Update the license info specifically for the framework.
greenshady authored
22 *
3594f29 Documentation updates galore.
greenshady authored
23 * You should have received a copy of the GNU General Public License along with this program; if not, write
24 * to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
a84cd56 Update the license info specifically for the framework.
greenshady authored
25 *
26 * @package HybridCore
9337d50 Documentation updates.
greenshady authored
27 * @version 1.0.0
28 * @author Justin Tadlock <justin@justintadlock.com>
29 * @copyright Copyright (c) 2008 - 2010, Justin Tadlock
8d8f1a3 Update the URL to the Hybrid Core page.
greenshady authored
30 * @link http://themehybrid.com/hybrid-core
9337d50 Documentation updates.
greenshady authored
31 * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
a84cd56 Update the license info specifically for the framework.
greenshady authored
32 */
33
34 /**
1823e75 Better inline documentation for the Hybrid class.
greenshady authored
35 * The Hybrid class launches the framework. It's the organizational structure behind the entire framework.
36 * This class should be loaded and initialized before anything else within the theme is called to properly use
37 * the framework.
38 *
39 * After parent themes call the Hybrid class, they should perform a theme setup function on the
40 * 'after_setup_theme' hook with a priority of 10. Child themes should add their theme setup function on
41 * the 'after_setup_theme' hook with a priority of 11. This allows the class to load theme-supported features
42 * at the appropriate time, which is on the 'after_setup_theme' hook with a priority of 12.
0586624 Importing the initial Hybrid Core files and folders.
greenshady authored
43 *
3594f29 Documentation updates galore.
greenshady authored
44 * @since 0.7.0
0586624 Importing the initial Hybrid Core files and folders.
greenshady authored
45 */
46 class Hybrid {
47
48 /**
1823e75 Better inline documentation for the Hybrid class.
greenshady authored
49 * PHP4 constructor method. This simply provides backwards compatibility for users with setups
50 * on older versions of PHP. Once WordPress no longer supports PHP4, this method will be removed.
0586624 Importing the initial Hybrid Core files and folders.
greenshady authored
51 *
3594f29 Documentation updates galore.
greenshady authored
52 * @since 0.9.0
0586624 Importing the initial Hybrid Core files and folders.
greenshady authored
53 */
54 function Hybrid() {
7a9980c Appropriate PHP4 and PHP5 constructor methods.
greenshady authored
55 $this->__construct();
0586624 Importing the initial Hybrid Core files and folders.
greenshady authored
56 }
57
58 /**
977325b Final (hopefully) update of the core Hybrid class to get the method l…
greenshady authored
59 * Constructor method for the Hybrid class. This method adds other methods of the class to
60 * specific hooks within WordPress. It controls the load order of the required files for running
61 * the framework.
0586624 Importing the initial Hybrid Core files and folders.
greenshady authored
62 *
c3cf33f Mark all 0.9.1 changes as 1.0.0 since that'll be the release version.
greenshady authored
63 * @since 1.0.0
0586624 Importing the initial Hybrid Core files and folders.
greenshady authored
64 */
7a9980c Appropriate PHP4 and PHP5 constructor methods.
greenshady authored
65 function __construct() {
0586624 Importing the initial Hybrid Core files and folders.
greenshady authored
66
977325b Final (hopefully) update of the core Hybrid class to get the method l…
greenshady authored
67 /* Define framework, parent theme, and child theme constants. */
68 add_action( 'after_setup_theme', array( &$this, 'constants' ), 1 );
0586624 Importing the initial Hybrid Core files and folders.
greenshady authored
69
9337d50 Documentation updates.
greenshady authored
70 /* Load the core functions required by the rest of the framework. */
977325b Final (hopefully) update of the core Hybrid class to get the method l…
greenshady authored
71 add_action( 'after_setup_theme', array( &$this, 'core' ), 2 );
0586624 Importing the initial Hybrid Core files and folders.
greenshady authored
72
977325b Final (hopefully) update of the core Hybrid class to get the method l…
greenshady authored
73 /* Language functions and translations setup. */
74 add_action( 'after_setup_theme', array( &$this, 'locale' ), 3 );
0586624 Importing the initial Hybrid Core files and folders.
greenshady authored
75
b2d4785 Move a few actions/filters out of the core Hybrid class into appropri…
greenshady authored
76 /* Initialize the framework's default actions and filters. */
77 add_action( 'after_setup_theme', array( &$this, 'default_filters' ), 4 );
0586624 Importing the initial Hybrid Core files and folders.
greenshady authored
78
977325b Final (hopefully) update of the core Hybrid class to get the method l…
greenshady authored
79 /* Load the framework functions. */
62f7c4e Better separation of core files and functions and a more logical load…
greenshady authored
80 add_action( 'after_setup_theme', array( &$this, 'functions' ), 12 );
81
977325b Final (hopefully) update of the core Hybrid class to get the method l…
greenshady authored
82 /* Load the framework extensions. */
83 add_action( 'after_setup_theme', array( &$this, 'extensions' ), 13 );
0586624 Importing the initial Hybrid Core files and folders.
greenshady authored
84
02c9e07 Cleaning up the admin functionality for a better development experience.
greenshady authored
85 /* Load admin files. */
86 add_action( 'wp_loaded', array( &$this, 'admin' ) );
0586624 Importing the initial Hybrid Core files and folders.
greenshady authored
87 }
88
89 /**
90 * Defines the constant paths for use within the core framework, parent theme, and
91 * child theme. Constants prefixed with 'HYBRID_' are for use only within the core
9337d50 Documentation updates.
greenshady authored
92 * framework and don't reference other areas of the parent or child theme.
0586624 Importing the initial Hybrid Core files and folders.
greenshady authored
93 *
3594f29 Documentation updates galore.
greenshady authored
94 * @since 0.7.0
0586624 Importing the initial Hybrid Core files and folders.
greenshady authored
95 */
96 function constants() {
977325b Final (hopefully) update of the core Hybrid class to get the method l…
greenshady authored
97
0586624 Importing the initial Hybrid Core files and folders.
greenshady authored
98 /* Sets the path to the parent theme directory. */
99 define( 'THEME_DIR', get_template_directory() );
100
101 /* Sets the path to the parent theme directory URI. */
102 define( 'THEME_URI', get_template_directory_uri() );
103
104 /* Sets the path to the child theme directory. */
105 define( 'CHILD_THEME_DIR', get_stylesheet_directory() );
106
107 /* Sets the path to the child theme directory URI. */
108 define( 'CHILD_THEME_URI', get_stylesheet_directory_uri() );
109
110 /* Sets the path to the core framework directory. */
40f0819 Moving the Hybrid class to the root directory of the framework. This…
greenshady authored
111 define( 'HYBRID_DIR', trailingslashit( THEME_DIR ) . basename( dirname( __FILE__ ) ) );
0586624 Importing the initial Hybrid Core files and folders.
greenshady authored
112
113 /* Sets the path to the core framework directory URI. */
40f0819 Moving the Hybrid class to the root directory of the framework. This…
greenshady authored
114 define( 'HYBRID_URI', trailingslashit( THEME_URI ) . basename( dirname( __FILE__ ) ) );
0586624 Importing the initial Hybrid Core files and folders.
greenshady authored
115
116 /* Sets the path to the core framework admin directory. */
40f0819 Moving the Hybrid class to the root directory of the framework. This…
greenshady authored
117 define( 'HYBRID_ADMIN', trailingslashit( HYBRID_DIR ) . 'admin' );
0586624 Importing the initial Hybrid Core files and folders.
greenshady authored
118
119 /* Sets the path to the core framework classes directory. */
40f0819 Moving the Hybrid class to the root directory of the framework. This…
greenshady authored
120 define( 'HYBRID_CLASSES', trailingslashit( HYBRID_DIR ) . 'classes' );
0586624 Importing the initial Hybrid Core files and folders.
greenshady authored
121
122 /* Sets the path to the core framework extensions directory. */
40f0819 Moving the Hybrid class to the root directory of the framework. This…
greenshady authored
123 define( 'HYBRID_EXTENSIONS', trailingslashit( HYBRID_DIR ) . 'extensions' );
0586624 Importing the initial Hybrid Core files and folders.
greenshady authored
124
125 /* Sets the path to the core framework functions directory. */
40f0819 Moving the Hybrid class to the root directory of the framework. This…
greenshady authored
126 define( 'HYBRID_FUNCTIONS', trailingslashit( HYBRID_DIR ) . 'functions' );
0586624 Importing the initial Hybrid Core files and folders.
greenshady authored
127
128 /* Sets the path to the core framework images directory URI. */
40f0819 Moving the Hybrid class to the root directory of the framework. This…
greenshady authored
129 define( 'HYBRID_IMAGES', trailingslashit( HYBRID_URI ) . 'images' );
0586624 Importing the initial Hybrid Core files and folders.
greenshady authored
130
131 /* Sets the path to the core framework CSS directory URI. */
40f0819 Moving the Hybrid class to the root directory of the framework. This…
greenshady authored
132 define( 'HYBRID_CSS', trailingslashit( HYBRID_URI ) . 'css' );
0586624 Importing the initial Hybrid Core files and folders.
greenshady authored
133
134 /* Sets the path to the core framework JavaScript directory URI. */
40f0819 Moving the Hybrid class to the root directory of the framework. This…
greenshady authored
135 define( 'HYBRID_JS', trailingslashit( HYBRID_URI ) . 'js' );
0586624 Importing the initial Hybrid Core files and folders.
greenshady authored
136 }
137
138 /**
1823e75 Better inline documentation for the Hybrid class.
greenshady authored
139 * Loads the core framework functions. These files are needed before loading anything else in the
140 * framework because they have required functions for use.
0586624 Importing the initial Hybrid Core files and folders.
greenshady authored
141 *
c3cf33f Mark all 0.9.1 changes as 1.0.0 since that'll be the release version.
greenshady authored
142 * @since 1.0.0
62f7c4e Better separation of core files and functions and a more logical load…
greenshady authored
143 */
144 function core() {
1823e75 Better inline documentation for the Hybrid class.
greenshady authored
145
146 /* Load the core framework functions. */
79459d0 Always use trailingslashit() to add a trailing slash when including f…
greenshady authored
147 require_once( trailingslashit( HYBRID_FUNCTIONS ) . 'core.php' );
1823e75 Better inline documentation for the Hybrid class.
greenshady authored
148
149 /* Load the context-based functions. */
79459d0 Always use trailingslashit() to add a trailing slash when including f…
greenshady authored
150 require_once( trailingslashit( HYBRID_FUNCTIONS ) . 'context.php' );
977325b Final (hopefully) update of the core Hybrid class to get the method l…
greenshady authored
151 }
152
153 /**
154 * Handles the locale functions file and translations.
155 *
156 * @since 1.0.0
157 */
158 function locale() {
159
160 /* Load theme textdomain. */
161 load_theme_textdomain( hybrid_get_textdomain() );
162
163 /* Get the user's locale. */
164 $locale = get_locale();
165
166 /* Locate a locale-specific functions file. */
167 $locale_functions = locate_template( array( "languages/{$locale}.php", "{$locale}.php" ) );
168
169 /* If the locale file exists and is readable, load it. */
170 if ( !empty( $locale_functions ) && is_readable( $locale_functions ) )
171 require_once( $locale_functions );
62f7c4e Better separation of core files and functions and a more logical load…
greenshady authored
172 }
173
174 /**
1823e75 Better inline documentation for the Hybrid class.
greenshady authored
175 * Loads the framework functions. Many of these functions are needed to properly run the
176 * framework. Some components are only loaded if the theme supports them.
62f7c4e Better separation of core files and functions and a more logical load…
greenshady authored
177 *
3594f29 Documentation updates galore.
greenshady authored
178 * @since 0.7.0
0586624 Importing the initial Hybrid Core files and folders.
greenshady authored
179 */
180 function functions() {
62f7c4e Better separation of core files and functions and a more logical load…
greenshady authored
181
182 /* Load the comments functions. */
79459d0 Always use trailingslashit() to add a trailing slash when including f…
greenshady authored
183 require_once( trailingslashit( HYBRID_FUNCTIONS ) . 'comments.php' );
62f7c4e Better separation of core files and functions and a more logical load…
greenshady authored
184
185 /* Load media-related functions. */
79459d0 Always use trailingslashit() to add a trailing slash when including f…
greenshady authored
186 require_once( trailingslashit( HYBRID_FUNCTIONS ) . 'media.php' );
62f7c4e Better separation of core files and functions and a more logical load…
greenshady authored
187
6469db8 Rename the template.php file to utility.php since most of the templat…
greenshady authored
188 /* Load the utility functions. */
79459d0 Always use trailingslashit() to add a trailing slash when including f…
greenshady authored
189 require_once( trailingslashit( HYBRID_FUNCTIONS ) . 'utility.php' );
62f7c4e Better separation of core files and functions and a more logical load…
greenshady authored
190
191 /* Load the widget functions. */
79459d0 Always use trailingslashit() to add a trailing slash when including f…
greenshady authored
192 require_once( trailingslashit( HYBRID_FUNCTIONS ) . 'widgets.php' );
62f7c4e Better separation of core files and functions and a more logical load…
greenshady authored
193
194 /* Load the menus functions if supported. */
79459d0 Always use trailingslashit() to add a trailing slash when including f…
greenshady authored
195 require_if_theme_supports( 'hybrid-core-menus', trailingslashit( HYBRID_FUNCTIONS ) . 'menus.php' );
62f7c4e Better separation of core files and functions and a more logical load…
greenshady authored
196
977325b Final (hopefully) update of the core Hybrid class to get the method l…
greenshady authored
197 /* Load the core SEO component. */
79459d0 Always use trailingslashit() to add a trailing slash when including f…
greenshady authored
198 require_if_theme_supports( 'hybrid-core-seo', trailingslashit( HYBRID_FUNCTIONS ) . 'core-seo.php' );
62f7c4e Better separation of core files and functions and a more logical load…
greenshady authored
199
200 /* Load the shortcodes if supported. */
79459d0 Always use trailingslashit() to add a trailing slash when including f…
greenshady authored
201 require_if_theme_supports( 'hybrid-core-shortcodes', trailingslashit( HYBRID_FUNCTIONS ) . 'shortcodes.php' );
62f7c4e Better separation of core files and functions and a more logical load…
greenshady authored
202
203 /* Load the template hierarchy if supported. */
79459d0 Always use trailingslashit() to add a trailing slash when including f…
greenshady authored
204 require_if_theme_supports( 'hybrid-core-template-hierarchy', trailingslashit( HYBRID_FUNCTIONS ) . 'template-hierarchy.php' );
62f7c4e Better separation of core files and functions and a more logical load…
greenshady authored
205
206 /* Load the deprecated functions if supported. */
79459d0 Always use trailingslashit() to add a trailing slash when including f…
greenshady authored
207 require_if_theme_supports( 'hybrid-core-deprecated', trailingslashit( HYBRID_FUNCTIONS ) . 'deprecated.php' );
0586624 Importing the initial Hybrid Core files and folders.
greenshady authored
208 }
209
210 /**
1823e75 Better inline documentation for the Hybrid class.
greenshady authored
211 * Load extensions (external projects). Extensions are projects that are included within the
212 * framework but are not a part of it. They are external projects developed outside of the
213 * framework. Themes must use add_theme_support( $extension ) to use a specific extension
214 * within the theme. This should be declared on 'after_setup_theme' no later than a priority of 11.
0586624 Importing the initial Hybrid Core files and folders.
greenshady authored
215 *
3594f29 Documentation updates galore.
greenshady authored
216 * @since 0.7.0
0586624 Importing the initial Hybrid Core files and folders.
greenshady authored
217 */
218 function extensions() {
219
220 /* Load the Breadcrumb Trail extension if supported. */
79459d0 Always use trailingslashit() to add a trailing slash when including f…
greenshady authored
221 require_if_theme_supports( 'breadcrumb-trail', trailingslashit( HYBRID_EXTENSIONS ) . 'breadcrumb-trail.php' );
0586624 Importing the initial Hybrid Core files and folders.
greenshady authored
222
223 /* Load the Custom Field Series extension if supported. */
79459d0 Always use trailingslashit() to add a trailing slash when including f…
greenshady authored
224 require_if_theme_supports( 'custom-field-series', trailingslashit( HYBRID_EXTENSIONS ) . 'custom-field-series.php' );
0586624 Importing the initial Hybrid Core files and folders.
greenshady authored
225
226 /* Load the Get the Image extension if supported. */
79459d0 Always use trailingslashit() to add a trailing slash when including f…
greenshady authored
227 require_if_theme_supports( 'get-the-image', trailingslashit( HYBRID_EXTENSIONS ) . 'get-the-image.php' );
0586624 Importing the initial Hybrid Core files and folders.
greenshady authored
228
229 /* Load the Get the Object extension if supported. */
79459d0 Always use trailingslashit() to add a trailing slash when including f…
greenshady authored
230 require_if_theme_supports( 'get-the-object', trailingslashit( HYBRID_EXTENSIONS ) . 'get-the-object.php' );
0586624 Importing the initial Hybrid Core files and folders.
greenshady authored
231
232 /* Load the Pagination extension if supported. */
79459d0 Always use trailingslashit() to add a trailing slash when including f…
greenshady authored
233 require_if_theme_supports( 'loop-pagination', trailingslashit( HYBRID_EXTENSIONS ) . 'loop-pagination.php' );
0586624 Importing the initial Hybrid Core files and folders.
greenshady authored
234
235 /* Load the Entry Views extension if supported. */
79459d0 Always use trailingslashit() to add a trailing slash when including f…
greenshady authored
236 require_if_theme_supports( 'entry-views', trailingslashit( HYBRID_EXTENSIONS ) . 'entry-views.php' );
680a354 Official introduction of the post layouts extension. First pass.
greenshady authored
237
238 /* Load the Post Layouts extension if supported. */
79459d0 Always use trailingslashit() to add a trailing slash when including f…
greenshady authored
239 require_if_theme_supports( 'post-layouts', trailingslashit( HYBRID_EXTENSIONS ) . 'post-layouts.php' );
e674efb Moving more Hybrid theme stuff out of core.
greenshady authored
240
982c613 Post Stylesheets is now officially an extension.
greenshady authored
241 /* Load the Post Stylesheets extension if supported. */
79459d0 Always use trailingslashit() to add a trailing slash when including f…
greenshady authored
242 require_if_theme_supports( 'post-stylesheets', trailingslashit( HYBRID_EXTENSIONS ) . 'post-stylesheets.php' );
0586624 Importing the initial Hybrid Core files and folders.
greenshady authored
243 }
244
245 /**
1823e75 Better inline documentation for the Hybrid class.
greenshady authored
246 * Load admin files for the framework.
0586624 Importing the initial Hybrid Core files and folders.
greenshady authored
247 *
3594f29 Documentation updates galore.
greenshady authored
248 * @since 0.7.0
0586624 Importing the initial Hybrid Core files and folders.
greenshady authored
249 */
250 function admin() {
1823e75 Better inline documentation for the Hybrid class.
greenshady authored
251
252 /* Check if in the WordPress admin. */
0586624 Importing the initial Hybrid Core files and folders.
greenshady authored
253 if ( is_admin() ) {
1823e75 Better inline documentation for the Hybrid class.
greenshady authored
254
255 /* Load the main admin file. */
79459d0 Always use trailingslashit() to add a trailing slash when including f…
greenshady authored
256 require_once( trailingslashit( HYBRID_ADMIN ) . 'admin.php' );
1823e75 Better inline documentation for the Hybrid class.
greenshady authored
257
02c9e07 Cleaning up the admin functionality for a better development experience.
greenshady authored
258 /* Load the theme settings feature if supported. */
79459d0 Always use trailingslashit() to add a trailing slash when including f…
greenshady authored
259 require_if_theme_supports( 'hybrid-core-theme-settings', trailingslashit( HYBRID_ADMIN ) . 'theme-settings.php' );
1823e75 Better inline documentation for the Hybrid class.
greenshady authored
260
02c9e07 Cleaning up the admin functionality for a better development experience.
greenshady authored
261 /* Load the post meta box if supported. */
79459d0 Always use trailingslashit() to add a trailing slash when including f…
greenshady authored
262 require_if_theme_supports( 'hybrid-core-post-meta-box', trailingslashit( HYBRID_ADMIN ) . 'post-meta-box.php' );
0586624 Importing the initial Hybrid Core files and folders.
greenshady authored
263 }
264 }
265
266 /**
b2d4785 Move a few actions/filters out of the core Hybrid class into appropri…
greenshady authored
267 * Adds the default framework actions and filters.
0586624 Importing the initial Hybrid Core files and folders.
greenshady authored
268 *
b2d4785 Move a few actions/filters out of the core Hybrid class into appropri…
greenshady authored
269 * @since 1.0.0
0586624 Importing the initial Hybrid Core files and folders.
greenshady authored
270 */
b2d4785 Move a few actions/filters out of the core Hybrid class into appropri…
greenshady authored
271 function default_filters() {
0586624 Importing the initial Hybrid Core files and folders.
greenshady authored
272
b2d4785 Move a few actions/filters out of the core Hybrid class into appropri…
greenshady authored
273 /* Move the WordPress generator to a better priority. */
0586624 Importing the initial Hybrid Core files and folders.
greenshady authored
274 remove_action( 'wp_head', 'wp_generator' );
e674efb Moving more Hybrid theme stuff out of core.
greenshady authored
275 add_action( 'wp_head', 'wp_generator', 1 );
0586624 Importing the initial Hybrid Core files and folders.
greenshady authored
276
b2d4785 Move a few actions/filters out of the core Hybrid class into appropri…
greenshady authored
277 /* Add the theme info to the header (lets theme developers give better support). */
278 add_action( 'wp_head', 'hybrid_meta_template', 1 );
977325b Final (hopefully) update of the core Hybrid class to get the method l…
greenshady authored
279
0586624 Importing the initial Hybrid Core files and folders.
greenshady authored
280 /* Filter the textdomain mofile to allow child themes to load the parent theme translation. */
281 add_filter( 'load_textdomain_mofile', 'hybrid_load_textdomain', 10, 2 );
282
62f7c4e Better separation of core files and functions and a more logical load…
greenshady authored
283 /* Make text widgets and term descriptions shortcode aware. */
0586624 Importing the initial Hybrid Core files and folders.
greenshady authored
284 add_filter( 'widget_text', 'do_shortcode' );
285 add_filter( 'term_description', 'do_shortcode' );
286 }
287 }
288
289 ?>
Something went wrong with that request. Please try again.