diff --git a/.travis.yml b/.travis.yml
index fa38f3635f..ac066b908c 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -23,9 +23,12 @@ install:
- composer self-update && composer --version
- export PATH="$HOME/.composer/vendor/bin:$PATH"
- composer global require squizlabs/php_codesniffer
+ - composer global require phpmd/phpmd
+ - composer install -o
script:
- npm run build
- npm run jshint
- npm run jscs
- - phpcs --standard=ruleset.xml --extensions=php -n -s .
+ - phpcs --standard=ruleset.xml --extensions=php --ignore=node_modules,bower_components,vendor -n -s .
+ - phpmd app text cleancode,codesize,controversial,design,naming,unusedcode
diff --git a/app/admin.php b/app/admin.php
new file mode 100644
index 0000000000..74fa2c480f
--- /dev/null
+++ b/app/admin.php
@@ -0,0 +1,15 @@
+get_setting('blogname')->transport = 'postMessage';
+});
+
+/**
+ * Customizer JS
+ */
+add_action('customize_preview_init', function () {
+ wp_enqueue_script('sage/customizer', asset_path('scripts/customizer.js'), ['customize-preview'], null, true);
+});
diff --git a/app/filters.php b/app/filters.php
new file mode 100644
index 0000000000..a631da64db
--- /dev/null
+++ b/app/filters.php
@@ -0,0 +1,55 @@
+ classes
+ */
+add_filter('body_class', function (array $classes) {
+ // Add page slug if it doesn't exist
+ if (is_single() || is_page() && !is_front_page()) {
+ if (!in_array(basename(get_permalink()), $classes)) {
+ $classes[] = basename(get_permalink());
+ }
+ }
+
+ // Add class if sidebar is active
+ if (display_sidebar()) {
+ $classes[] = 'sidebar-primary';
+ }
+
+ return $classes;
+});
+
+/**
+ * Clean up the_excerpt()
+ */
+add_filter('excerpt_more', function () {
+ return ' … ' . __('Continued', 'sage') . '';
+});
+
+
+/**
+ * Use Wrapper by default
+ */
+add_filter('template_include', function ($main) {
+ if (!is_string($main) || !(string) $main) {
+ return $main;
+ }
+ $main = basename($main, '.php');
+ return Template::wrap(new Wrapper($main, 'layouts/base.php'))->locate();
+}, 109);
diff --git a/app/helpers.php b/app/helpers.php
new file mode 100644
index 0000000000..395744a9b6
--- /dev/null
+++ b/app/helpers.php
@@ -0,0 +1,77 @@
+locate()) {
+ /** @noinspection PhpIncludeInspection */
+ include $file;
+ }
+}
+
+/**
+ * @param array $context
+ */
+function template_sidebar($context = []) {
+ template_part('sidebar', $context);
+}
+
+/**
+ * @param $template
+ * @param array $context
+ */
+function template_part($template, $context = []) {
+ if ($file = (new Template($template, $context))->locate()) {
+ /** @noinspection PhpIncludeInspection */
+ include $file;
+ }
+}
+
+/**
+ * @param $filename
+ * @return string
+ */
+function asset_path($filename) {
+ static $manifest;
+ isset($manifest) || $manifest = new JsonManifest(get_template_directory() . '/' . Asset::$dist . '/assets.json');
+ return (string) new Asset($filename, $manifest);
+}
+
+/**
+ * Determine whether to show the sidebar
+ * @return bool
+ */
+function display_sidebar() {
+ static $display;
+ isset($display) || $display = apply_filters('sage/display_sidebar', true);
+ return $display;
+}
+
+/**
+ * Page titles
+ * @return string
+ */
+function title() {
+ if (is_home()) {
+ if ($home = get_option('page_for_posts', true)) {
+ return get_the_title($home);
+ }
+ return __('Latest Posts', 'sage');
+ }
+ if (is_archive()) {
+ return get_the_archive_title();
+ }
+ if (is_search()) {
+ return sprintf(__('Search Results for %s', 'sage'), get_search_query());
+ }
+ if (is_404()) {
+ return __('Not Found', 'sage');
+ }
+ return get_the_title();
+}
diff --git a/app/lib/Sage/Asset.php b/app/lib/Sage/Asset.php
new file mode 100644
index 0000000000..fd47a7bfa1
--- /dev/null
+++ b/app/lib/Sage/Asset.php
@@ -0,0 +1,35 @@
+manifest = $manifest;
+ $this->asset = basename($file);
+ $this->dir = dirname($file) != '.' ? dirname($file) : '';
+ }
+
+ public function __toString() {
+ return $this->getUri();
+ }
+
+ public function getUri() {
+ $file = self::$dist . '/' . $this->dir . '/' . ($this->manifest ? $this->manifest->get($this->asset) : $this->asset);
+ return get_template_directory_uri() . $file;
+ }
+}
diff --git a/app/lib/Sage/Assets/IManifest.php b/app/lib/Sage/Assets/IManifest.php
new file mode 100644
index 0000000000..62b5134261
--- /dev/null
+++ b/app/lib/Sage/Assets/IManifest.php
@@ -0,0 +1,26 @@
+manifest = file_exists($manifestPath) ? json_decode(file_get_contents($manifestPath), true) : [];
+ }
+
+ /** @inheritdoc */
+ public function get($file) {
+ return isset($this->manifest[$file]) ? $this->manifest[$file] : $file;
+ }
+
+ /** @inheritdoc */
+ public function getAll() {
+ return $this->manifest;
+ }
+}
diff --git a/app/lib/Sage/Template.php b/app/lib/Sage/Template.php
new file mode 100644
index 0000000000..3655e76e44
--- /dev/null
+++ b/app/lib/Sage/Template.php
@@ -0,0 +1,151 @@
+getSlug()] = $wrapper;
+ return new static($wrapper->getWrappers(), $context);
+ }
+
+ /**
+ * @param string $slug
+ * @param array $context
+ * @return static
+ */
+ public static function unwrap($slug = '', $context = []) {
+ if (!$slug) {
+ // If no slug is specified, we grab the most recently wrapped item
+ end(self::$wrappers);
+ $slug = key(self::$wrappers);
+ }
+ return new static(self::$wrappers[$slug]->getTemplate(), $context);
+ }
+
+ /**
+ * Converts a delimeted template file into an array of parts
+ *
+ * Example:
+ * Template::getConvertedTemplateParts('content-single-audio.php');
+ * => ['content-single-audio.php', 'content-single.php', 'content.php']
+ *
+ * The returned value can then be passed to WordPress's locate_template.
+ *
+ * @param string $template
+ * @param string $delimeter
+ * @return array
+ */
+ public static function convertParts($template, $delimeter = '-') {
+ $templateParts = explode($delimeter, str_replace('.php', '', (string) $template));
+ $templates[] = array_shift($templateParts);
+ foreach ($templateParts as $i => $templatePart) {
+ $templates[] = $templates[$i] . $delimeter . $templatePart;
+ }
+ return array_reverse($templates);
+ }
+
+ /**
+ * Template constructor
+ * @param string|string[] $template
+ * @param array $context
+ */
+ public function __construct($template, array $context = []) {
+ $this->set($template);
+ $this->context = $context;
+ }
+
+ /**
+ * @return string HTML
+ * @see get
+ */
+ public function __toString() {
+ return $this->get();
+ }
+
+ /**
+ * Echoes the output HTML
+ * @see get
+ */
+ public function render() {
+ echo $this->get();
+ }
+
+ /**
+ * @return string HTML
+ * @SuppressWarnings(PHPMD.UnusedLocalVariable)
+ */
+ public function get() {
+ /** @noinspection PhpUnusedLocalVariableInspection $context is passed to the included template */
+ $context = $this->context;
+ extract($this->context);
+ ob_start();
+ if ($template = $this->locate()) {
+ /** @noinspection PhpIncludeInspection */
+ include $template;
+ }
+ $this->html = ob_get_clean() ?: '';
+ return $this->html;
+ }
+
+ /**
+ * @param string[]|string $template
+ */
+ public function set($template) {
+ if (is_array($template)) {
+ $this->templates = self::format($template);
+ return;
+ }
+ if (!is_string($template) || !(string) $template) {
+ return;
+ }
+ // At this point, we assume it's something like `content-single.php` or `content-single-audio.php`
+ $this->templates = self::format(self::convertParts($template));
+ }
+
+ /**
+ * Ensures that each template in $this->templates is appended with `.php`
+ * @param $templates
+ * @return array
+ */
+ protected static function format($templates) {
+ return array_map(function ($template) {
+ if (substr($template, -4, 4) === '.php') {
+ return $template;
+ }
+ return $template . '.php';
+ }, $templates);
+ }
+
+ /**
+ * @param string $templateDir Specify a template directory relative to your theme directory; e.g., `templates/`, `templates/partials/`, `woocommerce/`
+ * @return string Filename
+ */
+ public function locate($templateDir = '') {
+ $templates = array_map(function ($template) use ($templateDir) {
+ return ($templateDir ?: self::$root) . $template;
+ }, $this->templates);
+ $template = locate_template($templates);
+ return apply_filters('sage/locate_template', $template, $templates) ?: $template;
+ }
+}
diff --git a/app/lib/Sage/Template/IWrapper.php b/app/lib/Sage/Template/IWrapper.php
new file mode 100644
index 0000000000..d785988788
--- /dev/null
+++ b/app/lib/Sage/Template/IWrapper.php
@@ -0,0 +1,27 @@
+slug = sanitize_title(basename($base, '.php'));
+ $this->wrappers = [$base];
+ $this->template = $templateSlug;
+ $str = substr($base, 0, -4);
+ array_unshift($this->wrappers, sprintf($str . '-%s.php', $templateSlug));
+ }
+
+ /** {@inheritdoc} */
+ public function getWrappers() {
+ $this->wrappers = apply_filters('sage/wrap_' . $this->slug, $this->wrappers) ?: $this->wrappers;
+ return $this->wrappers;
+ }
+
+ /** {@inheritdoc} */
+ public function getSlug() {
+ return $this->slug;
+ }
+
+ /** {@inheritdoc} */
+ public function getTemplate()
+ {
+ return $this->template;
+ }
+}
diff --git a/app/setup.php b/app/setup.php
new file mode 100644
index 0000000000..1127939e41
--- /dev/null
+++ b/app/setup.php
@@ -0,0 +1,96 @@
+ __('Primary Navigation', 'sage')
+ ]);
+
+ /**
+ * Enable 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/add_image_size
+ */
+ add_theme_support('post-thumbnails');
+
+ /**
+ * Enable post formats
+ * @link http://codex.wordpress.org/Post_Formats
+ */
+ add_theme_support('post-formats', ['aside', 'gallery', 'link', 'image', 'quote', 'video', 'audio']);
+
+ /**
+ * Enable HTML5 markup support
+ * @link http://codex.wordpress.org/Function_Reference/add_theme_support#HTML5
+ */
+ add_theme_support('html5', ['caption', 'comment-form', 'comment-list', 'gallery', 'search-form']);
+
+ /**
+ * Use main stylesheet for visual editor
+ * @see /assets/styles/layouts/_tinymce.scss
+ */
+ add_editor_style(asset_path('styles/main.css'));
+});
+
+/**
+ * Register sidebars
+ */
+add_action('widgets_init', function () {
+ $config = function ($name, $id = '') {
+ return [
+ 'name' => __($name, 'sage'),
+ 'id' => 'sidebar-' . $id ?: sanitize_title($name),
+ 'before_widget' => '',
+ 'before_title' => '
',
+ 'after_title' => '
'
+ ];
+ };
+
+ register_sidebar($config('Primary'));
+ register_sidebar($config('Footer'));
+});
+
+/**
+ * Theme assets
+ */
+add_action('wp_enqueue_scripts', function () {
+ wp_enqueue_style('sage/css', asset_path('styles/main.css'), false, null);
+
+ if (is_single() && comments_open() && get_option('thread_comments')) {
+ wp_enqueue_script('comment-reply');
+ }
+
+ wp_enqueue_script('sage/js', asset_path('scripts/main.js'), ['jquery'], null, true);
+}, 100);
diff --git a/composer.json b/composer.json
index d9e6d58c7b..8afb68b185 100644
--- a/composer.json
+++ b/composer.json
@@ -23,8 +23,19 @@
"issues": "https://github.com/roots/sage/issues",
"forum": "https://discourse.roots.io/"
},
+ "autoload": {
+ "psr-4": {
+ "Roots\\Sage\\": "app/lib/Sage/"
+ },
+ "files": [
+ "app/helpers.php",
+ "app/setup.php",
+ "app/filters.php",
+ "app/admin.php"
+ ]
+ },
"require": {
- "php": ">=5.4.0",
+ "php": ">=5.5.0",
"composer/installers": "~1.0"
}
-}
\ No newline at end of file
+}
diff --git a/composer.lock b/composer.lock
new file mode 100644
index 0000000000..6f0dea204d
--- /dev/null
+++ b/composer.lock
@@ -0,0 +1,119 @@
+{
+ "_readme": [
+ "This file locks the dependencies of your project to a known state",
+ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
+ "This file is @generated automatically"
+ ],
+ "hash": "85f4aee59d18d093f8e3a52b8a70f766",
+ "content-hash": "75ad99c892e1d82404c58fe3bd989585",
+ "packages": [
+ {
+ "name": "composer/installers",
+ "version": "v1.0.22",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/composer/installers.git",
+ "reference": "bd9b14f094c89c8b5804a4e41edeb7853bb85046"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/composer/installers/zipball/bd9b14f094c89c8b5804a4e41edeb7853bb85046",
+ "reference": "bd9b14f094c89c8b5804a4e41edeb7853bb85046",
+ "shasum": ""
+ },
+ "require": {
+ "composer-plugin-api": "1.0.0"
+ },
+ "replace": {
+ "roundcube/plugin-installer": "*",
+ "shama/baton": "*"
+ },
+ "require-dev": {
+ "composer/composer": "1.0.*@dev",
+ "phpunit/phpunit": "4.1.*"
+ },
+ "type": "composer-plugin",
+ "extra": {
+ "class": "Composer\\Installers\\Plugin",
+ "branch-alias": {
+ "dev-master": "1.0-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "Composer\\Installers\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Kyle Robinson Young",
+ "email": "kyle@dontkry.com",
+ "homepage": "https://github.com/shama"
+ }
+ ],
+ "description": "A multi-framework Composer library installer",
+ "homepage": "http://composer.github.com/installers/",
+ "keywords": [
+ "Craft",
+ "Dolibarr",
+ "Hurad",
+ "MODX Evo",
+ "OXID",
+ "SMF",
+ "Thelia",
+ "WolfCMS",
+ "agl",
+ "aimeos",
+ "annotatecms",
+ "bitrix",
+ "cakephp",
+ "chef",
+ "codeigniter",
+ "concrete5",
+ "croogo",
+ "dokuwiki",
+ "drupal",
+ "elgg",
+ "fuelphp",
+ "grav",
+ "installer",
+ "joomla",
+ "kohana",
+ "laravel",
+ "lithium",
+ "magento",
+ "mako",
+ "mediawiki",
+ "modulework",
+ "moodle",
+ "phpbb",
+ "piwik",
+ "ppi",
+ "puppet",
+ "roundcube",
+ "shopware",
+ "silverstripe",
+ "symfony",
+ "typo3",
+ "wordpress",
+ "zend",
+ "zikula"
+ ],
+ "time": "2015-10-29 23:28:48"
+ }
+ ],
+ "packages-dev": [],
+ "aliases": [],
+ "minimum-stability": "stable",
+ "stability-flags": [],
+ "prefer-stable": false,
+ "prefer-lowest": false,
+ "platform": {
+ "php": ">=5.5.0"
+ },
+ "platform-dev": []
+}
diff --git a/functions.php b/functions.php
index 35df8db212..11c9a5e2a4 100644
--- a/functions.php
+++ b/functions.php
@@ -1,28 +1,28 @@
+
-
-
-
-
-
-
-
-
-
-
-
+if (defined('ABSPATH')) {
+ update_option('template', get_option('template') . '/templates');
+}
+die("Kind Regards,\nRoots");
diff --git a/lib/assets.php b/lib/assets.php
deleted file mode 100644
index fba751cc3a..0000000000
--- a/lib/assets.php
+++ /dev/null
@@ -1,58 +0,0 @@
-manifest = json_decode(file_get_contents($manifest_path), true);
- } else {
- $this->manifest = [];
- }
- }
-
- public function get() {
- return $this->manifest;
- }
-
- public function getPath($key = '', $default = null) {
- $collection = $this->manifest;
- if (is_null($key)) {
- return $collection;
- }
- if (isset($collection[$key])) {
- return $collection[$key];
- }
- foreach (explode('.', $key) as $segment) {
- if (!isset($collection[$segment])) {
- return $default;
- } else {
- $collection = $collection[$segment];
- }
- }
- return $collection;
- }
-}
-
-function asset_path($filename) {
- $dist_path = get_template_directory_uri() . '/dist/';
- $directory = dirname($filename) . '/';
- $file = basename($filename);
- static $manifest;
-
- if (empty($manifest)) {
- $manifest_path = get_template_directory() . '/dist/' . 'assets.json';
- $manifest = new JsonManifest($manifest_path);
- }
-
- if (array_key_exists($file, $manifest->get())) {
- return $dist_path . $directory . $manifest->get()[$file];
- } else {
- return $dist_path . $directory . $file;
- }
-}
diff --git a/lib/customizer.php b/lib/customizer.php
deleted file mode 100644
index d0253f9409..0000000000
--- a/lib/customizer.php
+++ /dev/null
@@ -1,21 +0,0 @@
-get_setting('blogname')->transport = 'postMessage';
-}
-add_action('customize_register', __NAMESPACE__ . '\\customize_register');
-
-/**
- * Customizer JS
- */
-function customize_preview_js() {
- wp_enqueue_script('sage/customizer', Assets\asset_path('scripts/customizer.js'), ['customize-preview'], null, true);
-}
-add_action('customize_preview_init', __NAMESPACE__ . '\\customize_preview_js');
diff --git a/lib/extras.php b/lib/extras.php
deleted file mode 100644
index dc551563ef..0000000000
--- a/lib/extras.php
+++ /dev/null
@@ -1,33 +0,0 @@
- classes
- */
-function body_class($classes) {
- // Add page slug if it doesn't exist
- if (is_single() || is_page() && !is_front_page()) {
- if (!in_array(basename(get_permalink()), $classes)) {
- $classes[] = basename(get_permalink());
- }
- }
-
- // Add class if sidebar is active
- if (Setup\display_sidebar()) {
- $classes[] = 'sidebar-primary';
- }
-
- return $classes;
-}
-add_filter('body_class', __NAMESPACE__ . '\\body_class');
-
-/**
- * Clean up the_excerpt()
- */
-function excerpt_more() {
- return ' … ' . __('Continued', 'sage') . '';
-}
-add_filter('excerpt_more', __NAMESPACE__ . '\\excerpt_more');
diff --git a/lib/setup.php b/lib/setup.php
deleted file mode 100644
index b9f962d18b..0000000000
--- a/lib/setup.php
+++ /dev/null
@@ -1,106 +0,0 @@
- __('Primary Navigation', 'sage')
- ]);
-
- // Enable post thumbnails
- // http://codex.wordpress.org/Post_Thumbnails
- // http://codex.wordpress.org/Function_Reference/set_post_thumbnail_size
- // http://codex.wordpress.org/Function_Reference/add_image_size
- add_theme_support('post-thumbnails');
-
- // Enable post formats
- // http://codex.wordpress.org/Post_Formats
- add_theme_support('post-formats', ['aside', 'gallery', 'link', 'image', 'quote', 'video', 'audio']);
-
- // Enable HTML5 markup support
- // http://codex.wordpress.org/Function_Reference/add_theme_support#HTML5
- add_theme_support('html5', ['caption', 'comment-form', 'comment-list', 'gallery', 'search-form']);
-
- // Use main stylesheet for visual editor
- // To add custom styles edit /assets/styles/layouts/_tinymce.scss
- add_editor_style(Assets\asset_path('styles/main.css'));
-}
-add_action('after_setup_theme', __NAMESPACE__ . '\\setup');
-
-/**
- * Register sidebars
- */
-function widgets_init() {
- register_sidebar([
- 'name' => __('Primary', 'sage'),
- 'id' => 'sidebar-primary',
- 'before_widget' => '',
- 'before_title' => '',
- 'after_title' => '
'
- ]);
-
- register_sidebar([
- 'name' => __('Footer', 'sage'),
- 'id' => 'sidebar-footer',
- 'before_widget' => '',
- 'before_title' => '',
- 'after_title' => '
'
- ]);
-}
-add_action('widgets_init', __NAMESPACE__ . '\\widgets_init');
-
-/**
- * Determine which pages should NOT display the sidebar
- */
-function display_sidebar() {
- static $display;
-
- isset($display) || $display = !in_array(true, [
- // The sidebar will NOT be displayed if ANY of the following return true.
- // @link https://codex.wordpress.org/Conditional_Tags
- is_404(),
- is_front_page(),
- is_page_template('template-custom.php'),
- ]);
-
- return apply_filters('sage/display_sidebar', $display);
-}
-
-/**
- * Theme assets
- */
-function assets() {
- wp_enqueue_style('sage/css', Assets\asset_path('styles/main.css'), false, null);
-
- if (is_single() && comments_open() && get_option('thread_comments')) {
- wp_enqueue_script('comment-reply');
- }
-
- wp_enqueue_script('sage/js', Assets\asset_path('scripts/main.js'), ['jquery'], null, true);
-}
-add_action('wp_enqueue_scripts', __NAMESPACE__ . '\\assets', 100);
diff --git a/lib/titles.php b/lib/titles.php
deleted file mode 100644
index cdabacd65c..0000000000
--- a/lib/titles.php
+++ /dev/null
@@ -1,24 +0,0 @@
-slug = basename($template, '.php');
- $this->templates = [$template];
-
- if (self::$base) {
- $str = substr($template, 0, -4);
- array_unshift($this->templates, sprintf($str . '-%s.php', self::$base));
- }
- }
-
- public function __toString() {
- $this->templates = apply_filters('sage/wrap_' . $this->slug, $this->templates);
- return locate_template($this->templates);
- }
-
- public static function wrap($main) {
- // Check for other filters returning null
- if (!is_string($main)) {
- return $main;
- }
-
- self::$main_template = $main;
- self::$base = basename(self::$main_template, '.php');
-
- if (self::$base === 'index') {
- self::$base = false;
- }
-
- return new SageWrapping();
- }
-}
-add_filter('template_include', [__NAMESPACE__ . '\\SageWrapping', 'wrap'], 109);
diff --git a/package.json b/package.json
index 3e76e8472d..40b1c12eb5 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "sage",
- "version": "8.4.2",
+ "version": "9.0.0",
"author": "Ben Word ",
"homepage": "https://roots.io/sage/",
"private": true,
diff --git a/page.php b/page.php
deleted file mode 100644
index 6e55a0d8ee..0000000000
--- a/page.php
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/ruleset.xml b/ruleset.xml
index f0b7c0af41..8fb7a9cafb 100644
--- a/ruleset.xml
+++ b/ruleset.xml
@@ -28,11 +28,6 @@
templates/*
- 404.php
- index.php
- page.php
- single.php
- template-custom.php
diff --git a/single.php b/single.php
deleted file mode 100644
index 71b1840fa4..0000000000
--- a/single.php
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/style.css b/style.css
index 3b2edc874d..c03c6f347a 100644
--- a/style.css
+++ b/style.css
@@ -2,7 +2,7 @@
Theme Name: Sage Starter Theme
Theme URI: https://roots.io/sage/
Description: Sage is a WordPress starter theme. Contribute on GitHub
-Version: 8.4.2
+Version: 9.0.0
Author: Roots
Author URI: https://roots.io/
Text Domain: sage
diff --git a/template-custom.php b/template-custom.php
deleted file mode 100644
index 3becaba1a6..0000000000
--- a/template-custom.php
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
diff --git a/404.php b/templates/404.php
similarity index 73%
rename from 404.php
rename to templates/404.php
index 8d228d527b..23af1ece56 100644
--- a/404.php
+++ b/templates/404.php
@@ -1,4 +1,4 @@
-
+
diff --git a/templates/index.php b/templates/index.php
new file mode 100644
index 0000000000..16694b8fda
--- /dev/null
+++ b/templates/index.php
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/base.php b/templates/layouts/base.php
similarity index 69%
rename from base.php
rename to templates/layouts/base.php
index f5a0cfd04d..54b0de6fbc 100644
--- a/base.php
+++ b/templates/layouts/base.php
@@ -1,13 +1,6 @@
-
-
>
-
+
>
diff --git a/templates/page-header.php b/templates/page-header.php
deleted file mode 100644
index 55a27ca466..0000000000
--- a/templates/page-header.php
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
diff --git a/templates/page.php b/templates/page.php
new file mode 100644
index 0000000000..7a1d16710d
--- /dev/null
+++ b/templates/page.php
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/templates/comments.php b/templates/partials/comments.php
similarity index 100%
rename from templates/comments.php
rename to templates/partials/comments.php
diff --git a/templates/content-page.php b/templates/partials/content-page.php
similarity index 100%
rename from templates/content-page.php
rename to templates/partials/content-page.php
diff --git a/templates/content-search.php b/templates/partials/content-search.php
similarity index 71%
rename from templates/content-search.php
rename to templates/partials/content-search.php
index 79339c83c1..749f11acd7 100644
--- a/templates/content-search.php
+++ b/templates/partials/content-search.php
@@ -1,7 +1,7 @@
>
diff --git a/templates/content-single.php b/templates/partials/content-single.php
similarity index 76%
rename from templates/content-single.php
rename to templates/partials/content-single.php
index 2750794391..60392e9e48 100644
--- a/templates/content-single.php
+++ b/templates/partials/content-single.php
@@ -2,7 +2,7 @@
>
@@ -10,6 +10,6 @@
-
+
diff --git a/templates/content.php b/templates/partials/content.php
similarity index 80%
rename from templates/content.php
rename to templates/partials/content.php
index 0904a5ed88..3ae0e4abba 100644
--- a/templates/content.php
+++ b/templates/partials/content.php
@@ -1,7 +1,7 @@
>
diff --git a/templates/entry-meta.php b/templates/partials/entry-meta.php
similarity index 100%
rename from templates/entry-meta.php
rename to templates/partials/entry-meta.php
diff --git a/templates/footer.php b/templates/partials/footer.php
similarity index 100%
rename from templates/footer.php
rename to templates/partials/footer.php
diff --git a/templates/head.php b/templates/partials/head.php
similarity index 100%
rename from templates/head.php
rename to templates/partials/head.php
diff --git a/templates/header.php b/templates/partials/header.php
similarity index 100%
rename from templates/header.php
rename to templates/partials/header.php
diff --git a/templates/partials/page-header.php b/templates/partials/page-header.php
new file mode 100644
index 0000000000..0f1a21cdfc
--- /dev/null
+++ b/templates/partials/page-header.php
@@ -0,0 +1,3 @@
+
diff --git a/templates/sidebar.php b/templates/partials/sidebar.php
similarity index 100%
rename from templates/sidebar.php
rename to templates/partials/sidebar.php
diff --git a/search.php b/templates/search.php
similarity index 70%
rename from search.php
rename to templates/search.php
index 63d867c579..e150715b22 100644
--- a/search.php
+++ b/templates/search.php
@@ -1,4 +1,4 @@
-
+
@@ -8,7 +8,7 @@
-
+
diff --git a/templates/single.php b/templates/single.php
new file mode 100644
index 0000000000..345b962fb3
--- /dev/null
+++ b/templates/single.php
@@ -0,0 +1 @@
+
diff --git a/templates/template-custom.php b/templates/template-custom.php
new file mode 100644
index 0000000000..82ef512943
--- /dev/null
+++ b/templates/template-custom.php
@@ -0,0 +1,10 @@
+
+
+
+
+
+