Conform to new rules
This commit is contained in:
@@ -16,10 +16,10 @@
|
|||||||
* themes/sage/index.php also contains some self-correcting code, just in case the template option gets reset
|
* themes/sage/index.php also contains some self-correcting code, just in case the template option gets reset
|
||||||
*/
|
*/
|
||||||
add_filter('template', function ($template) {
|
add_filter('template', function ($template) {
|
||||||
return dirname($template);
|
return dirname($template);
|
||||||
});
|
});
|
||||||
add_action('after_switch_theme', function () {
|
add_action('after_switch_theme', function () {
|
||||||
update_option('template', get_option('template') . '/templates');
|
update_option('template', get_option('template') . '/templates');
|
||||||
});
|
});
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
13
phpcs.xml
13
phpcs.xml
@@ -2,8 +2,9 @@
|
|||||||
<ruleset name="Roots">
|
<ruleset name="Roots">
|
||||||
<description>Roots Coding Standards</description>
|
<description>Roots Coding Standards</description>
|
||||||
|
|
||||||
<!-- Use PSR-2 as a base -->
|
<!-- Scan these files -->
|
||||||
<rule ref="PSR2"/>
|
<file>functions.php</file>
|
||||||
|
<file>src</file>
|
||||||
|
|
||||||
<!-- Show colors in console -->
|
<!-- Show colors in console -->
|
||||||
<arg value="-colors"/>
|
<arg value="-colors"/>
|
||||||
@@ -11,7 +12,9 @@
|
|||||||
<!-- Show sniff codes in all reports -->
|
<!-- Show sniff codes in all reports -->
|
||||||
<arg value="s"/>
|
<arg value="s"/>
|
||||||
|
|
||||||
<!-- Scan these files -->
|
<!-- Use PSR-2 as a base -->
|
||||||
<file>functions.php</file>
|
<rule ref="PSR2">
|
||||||
<file>src</file>
|
<!-- Allow braces on same line for procedural functions -->
|
||||||
|
<exclude name="Squiz.Functions.MultiLineFunctionDeclaration.BraceOnSameLine"/>
|
||||||
|
</rule>
|
||||||
</ruleset>
|
</ruleset>
|
||||||
|
|||||||
@@ -4,13 +4,13 @@
|
|||||||
* Theme customizer
|
* Theme customizer
|
||||||
*/
|
*/
|
||||||
add_action('customize_register', function (\WP_Customize_Manager $wp_customize) {
|
add_action('customize_register', function (\WP_Customize_Manager $wp_customize) {
|
||||||
// Add postMessage support
|
// Add postMessage support
|
||||||
$wp_customize->get_setting('blogname')->transport = 'postMessage';
|
$wp_customize->get_setting('blogname')->transport = 'postMessage';
|
||||||
});
|
});
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Customizer JS
|
* Customizer JS
|
||||||
*/
|
*/
|
||||||
add_action('customize_preview_init', function () {
|
add_action('customize_preview_init', function () {
|
||||||
wp_enqueue_script('sage/customizer.js', asset_path('scripts/customizer.js'), ['customize-preview'], null, true);
|
wp_enqueue_script('sage/customizer.js', asset_path('scripts/customizer.js'), ['customize-preview'], null, true);
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -9,45 +9,45 @@ use Roots\Sage\Template\Wrapper;
|
|||||||
*/
|
*/
|
||||||
add_filter('sage/display_sidebar', function ($display) {
|
add_filter('sage/display_sidebar', function ($display) {
|
||||||
// The sidebar will NOT be displayed if ANY of the following return true
|
// The sidebar will NOT be displayed if ANY of the following return true
|
||||||
return $display ? !in_array(true, [
|
return $display ? !in_array(true, [
|
||||||
is_404(),
|
is_404(),
|
||||||
is_front_page(),
|
is_front_page(),
|
||||||
is_page_template('template-custom.php'),
|
is_page_template('template-custom.php'),
|
||||||
]) : $display;
|
]) : $display;
|
||||||
});
|
});
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Add <body> classes
|
* Add <body> classes
|
||||||
*/
|
*/
|
||||||
add_filter('body_class', function (array $classes) {
|
add_filter('body_class', function (array $classes) {
|
||||||
// Add page slug if it doesn't exist
|
// Add page slug if it doesn't exist
|
||||||
if (is_single() || is_page() && !is_front_page()) {
|
if (is_single() || is_page() && !is_front_page()) {
|
||||||
if (!in_array(basename(get_permalink()), $classes)) {
|
if (!in_array(basename(get_permalink()), $classes)) {
|
||||||
$classes[] = basename(get_permalink());
|
$classes[] = basename(get_permalink());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// Add class if sidebar is active
|
// Add class if sidebar is active
|
||||||
if (display_sidebar()) {
|
if (display_sidebar()) {
|
||||||
$classes[] = 'sidebar-primary';
|
$classes[] = 'sidebar-primary';
|
||||||
}
|
}
|
||||||
|
|
||||||
return $classes;
|
return $classes;
|
||||||
});
|
});
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Add "… Continued" to the excerpt
|
* Add "… Continued" to the excerpt
|
||||||
*/
|
*/
|
||||||
add_filter('excerpt_more', function () {
|
add_filter('excerpt_more', function () {
|
||||||
return ' … <a href="' . get_permalink() . '">' . __('Continued', 'sage') . '</a>';
|
return ' … <a href="' . get_permalink() . '">' . __('Continued', 'sage') . '</a>';
|
||||||
});
|
});
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Use theme wrapper
|
* Use theme wrapper
|
||||||
*/
|
*/
|
||||||
add_filter('template_include', function ($main) {
|
add_filter('template_include', function ($main) {
|
||||||
if (!is_string($main) || !(string) $main) {
|
if (!is_string($main) || !(string) $main) {
|
||||||
return $main;
|
return $main;
|
||||||
}
|
}
|
||||||
return template_wrap(new Wrapper(basename($main)));
|
return template_wrap(new Wrapper(basename($main)));
|
||||||
}, 109);
|
}, 109);
|
||||||
|
|||||||
@@ -6,12 +6,12 @@ use Roots\Sage\Template\WrapperCollection;
|
|||||||
use Roots\Sage\Template\WrapperInterface;
|
use Roots\Sage\Template\WrapperInterface;
|
||||||
|
|
||||||
function template_wrap(WrapperInterface $wrapper, $slug = 'base') {
|
function template_wrap(WrapperInterface $wrapper, $slug = 'base') {
|
||||||
WrapperCollection::add($wrapper, $slug);
|
WrapperCollection::add($wrapper, $slug);
|
||||||
return $wrapper->getWrapper();
|
return $wrapper->getWrapper();
|
||||||
}
|
}
|
||||||
|
|
||||||
function template_unwrap($slug = 'base') {
|
function template_unwrap($slug = 'base') {
|
||||||
return WrapperCollection::get($slug)->getTemplate();
|
return WrapperCollection::get($slug)->getTemplate();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -19,9 +19,9 @@ function template_unwrap($slug = 'base') {
|
|||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
function asset_path($filename) {
|
function asset_path($filename) {
|
||||||
static $manifest;
|
static $manifest;
|
||||||
isset($manifest) || $manifest = new JsonManifest(get_template_directory() . '/' . Asset::$dist . '/assets.json');
|
isset($manifest) || $manifest = new JsonManifest(get_template_directory() . '/' . Asset::$dist . '/assets.json');
|
||||||
return (string) new Asset($filename, $manifest);
|
return (string) new Asset($filename, $manifest);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -29,9 +29,9 @@ function asset_path($filename) {
|
|||||||
* @return bool
|
* @return bool
|
||||||
*/
|
*/
|
||||||
function display_sidebar() {
|
function display_sidebar() {
|
||||||
static $display;
|
static $display;
|
||||||
isset($display) || $display = apply_filters('sage/display_sidebar', true);
|
isset($display) || $display = apply_filters('sage/display_sidebar', true);
|
||||||
return $display;
|
return $display;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -39,20 +39,20 @@ function display_sidebar() {
|
|||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
function title() {
|
function title() {
|
||||||
if (is_home()) {
|
if (is_home()) {
|
||||||
if ($home = get_option('page_for_posts', true)) {
|
if ($home = get_option('page_for_posts', true)) {
|
||||||
return get_the_title($home);
|
return get_the_title($home);
|
||||||
|
}
|
||||||
|
return __('Latest Posts', 'sage');
|
||||||
}
|
}
|
||||||
return __('Latest Posts', 'sage');
|
if (is_archive()) {
|
||||||
}
|
return get_the_archive_title();
|
||||||
if (is_archive()) {
|
}
|
||||||
return get_the_archive_title();
|
if (is_search()) {
|
||||||
}
|
return sprintf(__('Search Results for %s', 'sage'), get_search_query());
|
||||||
if (is_search()) {
|
}
|
||||||
return sprintf(__('Search Results for %s', 'sage'), get_search_query());
|
if (is_404()) {
|
||||||
}
|
return __('Not Found', 'sage');
|
||||||
if (is_404()) {
|
}
|
||||||
return __('Not Found', 'sage');
|
return get_the_title();
|
||||||
}
|
|
||||||
return get_the_title();
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,28 +7,29 @@ use Roots\Sage\Assets\ManifestInterface;
|
|||||||
* @package Roots\Sage
|
* @package Roots\Sage
|
||||||
* @author QWp6t
|
* @author QWp6t
|
||||||
*/
|
*/
|
||||||
class Asset {
|
class Asset
|
||||||
public static $dist = '/dist';
|
{
|
||||||
|
public static $dist = '/dist';
|
||||||
|
|
||||||
/** @var ManifestInterface Currently used manifest */
|
/** @var ManifestInterface Currently used manifest */
|
||||||
protected $manifest;
|
protected $manifest;
|
||||||
|
|
||||||
protected $asset;
|
protected $asset;
|
||||||
|
|
||||||
protected $dir;
|
protected $dir;
|
||||||
|
|
||||||
public function __construct($file, ManifestInterface $manifest = null) {
|
public function __construct($file, ManifestInterface $manifest = null) {
|
||||||
$this->manifest = $manifest;
|
$this->manifest = $manifest;
|
||||||
$this->asset = basename($file);
|
$this->asset = basename($file);
|
||||||
$this->dir = dirname($file) != '.' ? dirname($file) : '';
|
$this->dir = dirname($file) != '.' ? dirname($file) : '';
|
||||||
}
|
}
|
||||||
|
|
||||||
public function __toString() {
|
public function __toString() {
|
||||||
return $this->getUri();
|
return $this->getUri();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getUri() {
|
public function getUri() {
|
||||||
$file = self::$dist . '/' . $this->dir . '/' . ($this->manifest ? $this->manifest->get($this->asset) : $this->asset);
|
$file = ($this->manifest ? $this->manifest->get($this->asset) : $this->asset);
|
||||||
return get_template_directory_uri() . $file;
|
return get_template_directory_uri() . self::$dist . '/' . $this->dir . '/' . $file;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,25 +5,29 @@
|
|||||||
* @package Roots\Sage
|
* @package Roots\Sage
|
||||||
* @author QWp6t
|
* @author QWp6t
|
||||||
*/
|
*/
|
||||||
class JsonManifest implements ManifestInterface {
|
class JsonManifest implements ManifestInterface
|
||||||
/** @var array */
|
{
|
||||||
protected $manifest = [];
|
/** @var array */
|
||||||
|
protected $manifest = [];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* JsonManifest constructor
|
* JsonManifest constructor
|
||||||
* @param string $manifestPath Local filesystem path to JSON-encoded manifest
|
* @param string $manifestPath Local filesystem path to JSON-encoded manifest
|
||||||
*/
|
*/
|
||||||
public function __construct($manifestPath) {
|
public function __construct($manifestPath)
|
||||||
$this->manifest = file_exists($manifestPath) ? json_decode(file_get_contents($manifestPath), true) : [];
|
{
|
||||||
}
|
$this->manifest = file_exists($manifestPath) ? json_decode(file_get_contents($manifestPath), true) : [];
|
||||||
|
}
|
||||||
|
|
||||||
/** @inheritdoc */
|
/** @inheritdoc */
|
||||||
public function get($file) {
|
public function get($file)
|
||||||
return isset($this->manifest[$file]) ? $this->manifest[$file] : $file;
|
{
|
||||||
}
|
return isset($this->manifest[$file]) ? $this->manifest[$file] : $file;
|
||||||
|
}
|
||||||
|
|
||||||
/** @inheritdoc */
|
/** @inheritdoc */
|
||||||
public function getAll() {
|
public function getAll()
|
||||||
return $this->manifest;
|
{
|
||||||
}
|
return $this->manifest;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,21 +5,22 @@
|
|||||||
* @package Roots\Sage
|
* @package Roots\Sage
|
||||||
* @author QWp6t
|
* @author QWp6t
|
||||||
*/
|
*/
|
||||||
interface ManifestInterface {
|
interface ManifestInterface
|
||||||
/**
|
{
|
||||||
* Get the cache-busted filename
|
/**
|
||||||
*
|
* Get the cache-busted filename
|
||||||
* If the manifest does not have an entry for $file, then return $file
|
*
|
||||||
*
|
* If the manifest does not have an entry for $file, then return $file
|
||||||
* @param string $file The original name of the file before cache-busting
|
*
|
||||||
* @return string
|
* @param string $file The original name of the file before cache-busting
|
||||||
*/
|
* @return string
|
||||||
public function get($file);
|
*/
|
||||||
|
public function get($file);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the asset manifest
|
* Get the asset manifest
|
||||||
*
|
*
|
||||||
* @return array
|
* @return array
|
||||||
*/
|
*/
|
||||||
public function getAll();
|
public function getAll();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,55 +5,61 @@
|
|||||||
* @package Roots\Sage
|
* @package Roots\Sage
|
||||||
* @author QWp6t
|
* @author QWp6t
|
||||||
*/
|
*/
|
||||||
class Wrapper implements WrapperInterface {
|
class Wrapper implements WrapperInterface
|
||||||
/** @var string Wrapper slug */
|
{
|
||||||
protected $slug;
|
/** @var string Wrapper slug */
|
||||||
|
protected $slug;
|
||||||
|
|
||||||
/** @var string Template file that is being wrapped */
|
/** @var string Template file that is being wrapped */
|
||||||
protected $template = '';
|
protected $template = '';
|
||||||
|
|
||||||
/** @var string[] Array of template wrappers; e.g., `base-singular.php`, `base-page.php`, `base.php` */
|
/** @var string[] Array of template wrappers; e.g., `base-singular.php`, `base-page.php`, `base.php` */
|
||||||
protected $wrapper = [];
|
protected $wrapper = [];
|
||||||
|
|
||||||
/** @var string[] Cache template locations */
|
/** @var string[] Cache template locations */
|
||||||
protected static $locations = [];
|
protected static $locations = [];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Wrapper constructor
|
* Wrapper constructor
|
||||||
*
|
*
|
||||||
* @param string $template Template file, as from Template Heirarchy; e.g., `page.php`, `single.php`, `singular.php`
|
* @param string $template Template file, as from Template Heirarchy; e.g., `page.php`, `single.php`, `singular.php`
|
||||||
* @param string $base Wrapper's base template, this is what will wrap around $template
|
* @param string $base Wrapper's base template, this is what will wrap around $template
|
||||||
*/
|
*/
|
||||||
public function __construct($template, $base = 'layouts/base.php') {
|
public function __construct($template, $base = 'layouts/base.php')
|
||||||
$this->slug = sanitize_title(basename($base, '.php'));
|
{
|
||||||
$this->wrapper = [$base];
|
$this->slug = sanitize_title(basename($base, '.php'));
|
||||||
$this->template = $template;
|
$this->wrapper = [$base];
|
||||||
$str = substr($base, 0, -4);
|
$this->template = $template;
|
||||||
array_unshift($this->wrapper, sprintf($str . '-%s.php', basename($template, '.php')));
|
$str = substr($base, 0, -4);
|
||||||
}
|
array_unshift($this->wrapper, sprintf($str . '-%s.php', basename($template, '.php')));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return string
|
* @return string
|
||||||
* @see getTemplate
|
* @see getTemplate
|
||||||
*/
|
*/
|
||||||
public function __toString() {
|
public function __toString()
|
||||||
return $this->getTemplate();
|
{
|
||||||
}
|
return $this->getTemplate();
|
||||||
|
}
|
||||||
|
|
||||||
/** {@inheritdoc} */
|
/** {@inheritdoc} */
|
||||||
public function getWrapper() {
|
public function getWrapper()
|
||||||
$wrappers = apply_filters('sage/wrap_' . $this->slug, $this->wrapper) ?: $this->wrapper;
|
{
|
||||||
return locate_template($wrappers);
|
$wrappers = apply_filters('sage/wrap_' . $this->slug, $this->wrapper) ?: $this->wrapper;
|
||||||
}
|
return locate_template($wrappers);
|
||||||
|
}
|
||||||
|
|
||||||
/** {@inheritdoc} */
|
/** {@inheritdoc} */
|
||||||
public function getSlug() {
|
public function getSlug()
|
||||||
return $this->slug;
|
{
|
||||||
}
|
return $this->slug;
|
||||||
|
}
|
||||||
|
|
||||||
/** {@inheritdoc} */
|
/** {@inheritdoc} */
|
||||||
public function getTemplate() {
|
public function getTemplate()
|
||||||
$template = apply_filters('sage/unwrap_' . $this->slug, $this->template) ?: $this->template;
|
{
|
||||||
return locate_template($template);
|
$template = apply_filters('sage/unwrap_' . $this->slug, $this->template) ?: $this->template;
|
||||||
}
|
return locate_template($template);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,69 +5,78 @@
|
|||||||
* @package Roots\Sage
|
* @package Roots\Sage
|
||||||
* @author QWp6t
|
* @author QWp6t
|
||||||
*/
|
*/
|
||||||
class WrapperCollection {
|
class WrapperCollection
|
||||||
/** @var $this */
|
{
|
||||||
protected static $instance;
|
/** @var $this */
|
||||||
/** @var WrapperInterface[] $wrappers */
|
protected static $instance;
|
||||||
protected $wrappers = [];
|
/** @var WrapperInterface[] $wrappers */
|
||||||
|
protected $wrappers = [];
|
||||||
|
|
||||||
/** Singleton */
|
/** Singleton */
|
||||||
private function __construct() {}
|
// @codingStandardsIgnoreStart
|
||||||
private function __clone() {}
|
private function __construct() {}
|
||||||
|
private function __clone() {}
|
||||||
|
// @codingStandardsIgnoreEnd
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return static
|
* @return static
|
||||||
*/
|
*/
|
||||||
public static function instance() {
|
public static function instance()
|
||||||
isset(self::$instance) || self::$instance = new static;
|
{
|
||||||
return self::$instance;
|
isset(self::$instance) || self::$instance = new static;
|
||||||
}
|
return self::$instance;
|
||||||
|
|
||||||
/**
|
|
||||||
* @param WrapperInterface $wrapper
|
|
||||||
* @param string $slug
|
|
||||||
* @param bool $overwriteIfExists
|
|
||||||
* @return $this
|
|
||||||
* @throws \Exception
|
|
||||||
*/
|
|
||||||
public static function add(WrapperInterface $wrapper, $slug = '', $overwriteIfExists = false) {
|
|
||||||
$slug = $slug ?: $wrapper->getSlug();
|
|
||||||
if (self::instance()->exists($slug) && !$overwriteIfExists) {
|
|
||||||
throw new \Exception("Wrapper $slug already exists.");
|
|
||||||
}
|
}
|
||||||
self::instance()->wrappers[$slug] = $wrapper;
|
|
||||||
return self::instance();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param string $slug
|
* @param WrapperInterface $wrapper
|
||||||
* @return $this
|
* @param string $slug
|
||||||
*/
|
* @param bool $overwriteIfExists
|
||||||
public static function remove($slug) {
|
* @return $this
|
||||||
unset(self::instance()->wrappers[$slug]);
|
* @throws \Exception
|
||||||
return self::instance();
|
*/
|
||||||
}
|
public static function add(WrapperInterface $wrapper, $slug = '', $overwriteIfExists = false)
|
||||||
|
{
|
||||||
|
$slug = $slug ?: $wrapper->getSlug();
|
||||||
|
if (self::instance()->exists($slug) && !$overwriteIfExists) {
|
||||||
|
throw new \Exception("Wrapper $slug already exists.");
|
||||||
|
}
|
||||||
|
self::instance()->wrappers[$slug] = $wrapper;
|
||||||
|
return self::instance();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param string $slug
|
* @param string $slug
|
||||||
* @return null|WrapperInterface
|
* @return $this
|
||||||
*/
|
*/
|
||||||
public static function get($slug) {
|
public static function remove($slug)
|
||||||
return isset(self::instance()->wrappers[$slug]) ? self::instance()->wrappers[$slug] : null;
|
{
|
||||||
}
|
unset(self::instance()->wrappers[$slug]);
|
||||||
|
return self::instance();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return string[] Slugs of wrappers in collection
|
* @param string $slug
|
||||||
*/
|
* @return null|WrapperInterface
|
||||||
public static function wrappers() {
|
*/
|
||||||
return array_keys(self::instance()->wrappers);
|
public static function get($slug)
|
||||||
}
|
{
|
||||||
|
return isset(self::instance()->wrappers[$slug]) ? self::instance()->wrappers[$slug] : null;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param $slug
|
* @return string[] Slugs of wrappers in collection
|
||||||
* @return bool
|
*/
|
||||||
*/
|
public static function wrappers()
|
||||||
public static function exists($slug) {
|
{
|
||||||
return isset(self::instance()->wrappers[$slug]);
|
return array_keys(self::instance()->wrappers);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param $slug
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public static function exists($slug)
|
||||||
|
{
|
||||||
|
return isset(self::instance()->wrappers[$slug]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,22 +5,23 @@
|
|||||||
* @package Roots\Sage
|
* @package Roots\Sage
|
||||||
* @author QWp6t
|
* @author QWp6t
|
||||||
*/
|
*/
|
||||||
interface WrapperInterface {
|
interface WrapperInterface
|
||||||
|
{
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get wrapper template file
|
* Get wrapper template file
|
||||||
*
|
*
|
||||||
* @return string Wrapper template (FQPN of, e.g., `base-page.php`, `base.php`)
|
* @return string Wrapper template (FQPN of, e.g., `base-page.php`, `base.php`)
|
||||||
*/
|
*/
|
||||||
public function getWrapper();
|
public function getWrapper();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return string Wrapped template (FQPN of, e.g., `page.php`, `single.php`, `singular.php`)
|
* @return string Wrapped template (FQPN of, e.g., `page.php`, `single.php`, `singular.php`)
|
||||||
*/
|
*/
|
||||||
public function getTemplate();
|
public function getTemplate();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return string Slug of the WrapperInterface; e.g., `base`
|
* @return string Slug of the WrapperInterface; e.g., `base`
|
||||||
*/
|
*/
|
||||||
public function getSlug();
|
public function getSlug();
|
||||||
}
|
}
|
||||||
|
|||||||
118
src/setup.php
118
src/setup.php
@@ -6,81 +6,81 @@ use Roots\Sage\Template;
|
|||||||
* Theme assets
|
* Theme assets
|
||||||
*/
|
*/
|
||||||
add_action('wp_enqueue_scripts', function () {
|
add_action('wp_enqueue_scripts', function () {
|
||||||
wp_enqueue_style('sage/main.css', asset_path('styles/main.css'), false, null);
|
wp_enqueue_style('sage/main.css', asset_path('styles/main.css'), false, null);
|
||||||
wp_enqueue_script('sage/main.js', asset_path('scripts/main.js'), ['jquery'], null, true);
|
wp_enqueue_script('sage/main.js', asset_path('scripts/main.js'), ['jquery'], null, true);
|
||||||
}, 100);
|
}, 100);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Theme setup
|
* Theme setup
|
||||||
*/
|
*/
|
||||||
add_action('after_setup_theme', function () {
|
add_action('after_setup_theme', function () {
|
||||||
/**
|
/**
|
||||||
* Enable features from Soil when plugin is activated
|
* Enable features from Soil when plugin is activated
|
||||||
* @link https://roots.io/plugins/soil/
|
* @link https://roots.io/plugins/soil/
|
||||||
*/
|
*/
|
||||||
add_theme_support('soil-clean-up');
|
add_theme_support('soil-clean-up');
|
||||||
add_theme_support('soil-jquery-cdn');
|
add_theme_support('soil-jquery-cdn');
|
||||||
add_theme_support('soil-nav-walker');
|
add_theme_support('soil-nav-walker');
|
||||||
add_theme_support('soil-nice-search');
|
add_theme_support('soil-nice-search');
|
||||||
add_theme_support('soil-relative-urls');
|
add_theme_support('soil-relative-urls');
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Enable plugins to manage the document title
|
* Enable plugins to manage the document title
|
||||||
* @link http://codex.wordpress.org/Function_Reference/add_theme_support#Title_Tag
|
* @link http://codex.wordpress.org/Function_Reference/add_theme_support#Title_Tag
|
||||||
*/
|
*/
|
||||||
add_theme_support('title-tag');
|
add_theme_support('title-tag');
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Register navigation menus
|
* Register navigation menus
|
||||||
* @link http://codex.wordpress.org/Function_Reference/register_nav_menus
|
* @link http://codex.wordpress.org/Function_Reference/register_nav_menus
|
||||||
*/
|
*/
|
||||||
register_nav_menus([
|
register_nav_menus([
|
||||||
'primary_navigation' => __('Primary Navigation', 'sage')
|
'primary_navigation' => __('Primary Navigation', 'sage')
|
||||||
]);
|
]);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Enable post thumbnails
|
* Enable post thumbnails
|
||||||
* @link http://codex.wordpress.org/Post_Thumbnails
|
* @link http://codex.wordpress.org/Post_Thumbnails
|
||||||
* @link http://codex.wordpress.org/Function_Reference/set_post_thumbnail_size
|
* @link http://codex.wordpress.org/Function_Reference/set_post_thumbnail_size
|
||||||
* @link http://codex.wordpress.org/Function_Reference/add_image_size
|
* @link http://codex.wordpress.org/Function_Reference/add_image_size
|
||||||
*/
|
*/
|
||||||
add_theme_support('post-thumbnails');
|
add_theme_support('post-thumbnails');
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Enable post formats
|
* Enable post formats
|
||||||
* @link http://codex.wordpress.org/Post_Formats
|
* @link http://codex.wordpress.org/Post_Formats
|
||||||
*/
|
*/
|
||||||
add_theme_support('post-formats', ['aside', 'gallery', 'link', 'image', 'quote', 'video', 'audio']);
|
add_theme_support('post-formats', ['aside', 'gallery', 'link', 'image', 'quote', 'video', 'audio']);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Enable HTML5 markup support
|
* Enable HTML5 markup support
|
||||||
* @link http://codex.wordpress.org/Function_Reference/add_theme_support#HTML5
|
* @link http://codex.wordpress.org/Function_Reference/add_theme_support#HTML5
|
||||||
*/
|
*/
|
||||||
add_theme_support('html5', ['caption', 'comment-form', 'comment-list', 'gallery', 'search-form']);
|
add_theme_support('html5', ['caption', 'comment-form', 'comment-list', 'gallery', 'search-form']);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Use main stylesheet for visual editor
|
* Use main stylesheet for visual editor
|
||||||
* @see assets/styles/layouts/_tinymce.scss
|
* @see assets/styles/layouts/_tinymce.scss
|
||||||
*/
|
*/
|
||||||
add_editor_style(asset_path('styles/main.css'));
|
add_editor_style(asset_path('styles/main.css'));
|
||||||
});
|
});
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Register sidebars
|
* Register sidebars
|
||||||
*/
|
*/
|
||||||
add_action('widgets_init', function () {
|
add_action('widgets_init', function () {
|
||||||
$config = [
|
$config = [
|
||||||
'before_widget' => '<section class="widget %1$s %2$s">',
|
'before_widget' => '<section class="widget %1$s %2$s">',
|
||||||
'after_widget' => '</section>',
|
'after_widget' => '</section>',
|
||||||
'before_title' => '<h3>',
|
'before_title' => '<h3>',
|
||||||
'after_title' => '</h3>'
|
'after_title' => '</h3>'
|
||||||
];
|
];
|
||||||
register_sidebar([
|
register_sidebar([
|
||||||
'name' => __('Primary', 'sage'),
|
'name' => __('Primary', 'sage'),
|
||||||
'id' => 'sidebar-primary'
|
'id' => 'sidebar-primary'
|
||||||
] + $config);
|
] + $config);
|
||||||
register_sidebar([
|
register_sidebar([
|
||||||
'name' => __('Footer', 'sage'),
|
'name' => __('Footer', 'sage'),
|
||||||
'id' => 'sidebar-footer'
|
'id' => 'sidebar-footer'
|
||||||
] + $config);
|
] + $config);
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user