diff --git a/functions.php b/functions.php index e7bbbdf..208556f 100644 --- a/functions.php +++ b/functions.php @@ -5,23 +5,46 @@ */ /** - * Require Composer autoloader if installed on it's own + * Helper function for prettying up errors + * @param string $message + * @param string $subtitle + * @param string $title */ -if (file_exists($composer = __DIR__ . '/vendor/autoload.php')) { - require_once $composer; +$error = function ($message, $subtitle = '', $title = '') { + $title = $title ?: __('Sage › Error', 'sage'); + $footer = 'roots.io/sage/docs'; + $message = "
{$message}
{$footer}
"; + wp_die($message, $title); +}; + +/** + * Ensure compatible version of PHP is used + */ +if (version_compare('5.6.4', phpversion(), '>=')) { + $error(__('You must be using PHP 5.6.4 or greater.', 'sage'), __('Invalid PHP version', 'sage')); } /** - * Sage includes - * - * The $sage_includes array determines the code library included in your theme. - * Add or remove files to the array as needed. Supports child theme overrides. - * - * Please note that missing files will produce a fatal error. + * Ensure dependencies are loaded */ -array_map(function ($file) { - if (!locate_template("src/{$file}.php", true, true)) { - trigger_error(sprintf(__('Error locating %s for inclusion', 'sage'), $file), E_USER_ERROR); +if (!file_exists($composer = __DIR__.'/vendor/autoload.php') && !class_exists('Roots\\Sage\\Container')) { + $error( + __('You must runcomposer install from the Sage directory.', 'sage'),
+ __('Autoloader not found.', 'sage')
+ );
+}
+require_once $composer;
+
+/**
+ * Sage required files
+ *
+ * The mapped array determines the code library included in your theme.
+ * Add or remove files to the array as needed. Supports child theme overrides.
+ */
+array_map(function ($file) use ($error) {
+ $file = "src/{$file}.php";
+ if (!locate_template($file, true, true)) {
+ $error(sprintf(__('Error locating %s for inclusion.', 'sage'), $file), 'File not found');
}
}, ['helpers', 'setup', 'filters', 'admin']);
diff --git a/src/admin.php b/src/admin.php
index bb25aac..ba6979a 100644
--- a/src/admin.php
+++ b/src/admin.php
@@ -8,6 +8,12 @@ namespace App;
add_action('customize_register', function (\WP_Customize_Manager $wp_customize) {
// Add postMessage support
$wp_customize->get_setting('blogname')->transport = 'postMessage';
+ $wp_customize->selective_refresh->add_partial('blogname', [
+ 'selector' => '.brand',
+ 'render_callback' => function () {
+ bloginfo('name');
+ }
+ ]);
});
/**
diff --git a/src/filters.php b/src/filters.php
index 0539c30..da4bbe8 100644
--- a/src/filters.php
+++ b/src/filters.php
@@ -57,7 +57,7 @@ add_filter('template_include', function ($template) {
echo template($template, $data);
// Return a blank file to make WordPress happy
- return dirname(__DIR__).'/index.php';
+ return get_theme_file_path('index.php');
}, PHP_INT_MAX);
/**
diff --git a/src/lib/Sage/Template/BladeProvider.php b/src/lib/Sage/Template/BladeProvider.php
index 40d59b4..63f3247 100644
--- a/src/lib/Sage/Template/BladeProvider.php
+++ b/src/lib/Sage/Template/BladeProvider.php
@@ -16,11 +16,12 @@ class BladeProvider extends ViewServiceProvider
/**
* @param ContainerContract $container
* @param array $config
+ * @SuppressWarnings(PHPMD.StaticAccess)
*/
public function __construct(ContainerContract $container = null, $config = [])
{
/** @noinspection PhpParamsInspection */
- parent::__construct($container ?: new Container);
+ parent::__construct($container ?: Container::getInstance());
$this->app->bindIf('config', function () use ($config) {
return $config;
@@ -45,9 +46,7 @@ class BladeProvider extends ViewServiceProvider
*/
public function registerFilesystem()
{
- $this->app->bindIf('files', function () {
- return new Filesystem;
- }, true);
+ $this->app->bindIf('files', Filesystem::class, true);
return $this;
}
@@ -56,9 +55,7 @@ class BladeProvider extends ViewServiceProvider
*/
public function registerEvents()
{
- $this->app->bindIf('events', function () {
- return new Dispatcher;
- }, true);
+ $this->app->bindIf('events', Dispatcher::class, true);
return $this;
}
diff --git a/src/setup.php b/src/setup.php
index fd8ab6e..e9bed02 100644
--- a/src/setup.php
+++ b/src/setup.php
@@ -56,6 +56,12 @@ add_action('after_setup_theme', function () {
*/
add_theme_support('html5', ['caption', 'comment-form', 'comment-list', 'gallery', 'search-form']);
+ /**
+ * Enable selective refresh for widgets in customizer
+ * @link https://developer.wordpress.org/themes/advanced-topics/customizer-api/#theme-support-in-sidebars
+ */
+ add_theme_support('customize-selective-refresh-widgets');
+
/**
* Use main stylesheet for visual editor
* @see assets/styles/layouts/_tinymce.scss