static public site_classes ( ) : array | ||
return | array |
static function site_classes()
{
if (!($site_classes = self::cache_get($cache_key = 'site_classes'))) {
/**
* Make sure we have all classes loaded.
*/
self::autoload_all_classes();
$site_classes = array_reverse(array_slice(get_declared_classes(), self::$_non_app_class_count));
$site_classes = array_filter($site_classes, function ($element) {
/*
* Strip out WordPress core classes
*/
return !preg_match('#^(WP|wp)_?#', $element);
});
self::cache_set($cache_key, $site_classes);
}
return $site_classes;
}
/** * @return WPLib_Theme_Base */ static function theme() { if (!self::$_theme) { foreach (WPLib::site_classes() as $class_name) { if (is_subclass_of($class_name, 'WPLib_Theme_Base')) { /* * Will create instance of FIRST class found that subclasses WPLib_Theme_Base. * That means sites should ONLY have ONE subclass of WPLib_Theme_Base. */ self::$_theme = new $class_name(); break; } } } if (!self::$_theme) { self::$_theme = new WPLib_Theme_Default(); } return self::$_theme; }