public static function findByUsage($contextType = null, $contentSizes = array()) { self::initialize(); $widget_layouts = array(); // get_stylsheet_directory() returns child theme path. $directory = get_stylesheet_directory() . "/views/widgets"; $acf_files = self::traverseHierarchy($directory); $acf_files = array_merge($acf_files, self::traversePlugins()); // Order files aphabetically. usort($acf_files, function ($a, $b) { include $a; $compareA = strtolower($widget_config['label']); include $b; $compareB = strtolower($widget_config['label']); return strcmp($compareA, $compareB); }); foreach ($acf_files as $file) { include $file; // If contextType is null, or if contentType matches, add widget to list if (!$contextType || in_array($contextType, $widget_config["content-types"]) && (count($contentSizes) === 0 || in_array($contentSizes, $widget_config["content-sizes"]))) { include_once "BaseWidget.php"; $widget_config = BaseWidget::add_extras($widget_config); $widget_layouts[] = $widget_config; } } return $widget_layouts; }