13
base.php
13
base.php
@@ -1,3 +1,10 @@
|
||||
<?php
|
||||
|
||||
namespace Roots\Sage;
|
||||
use Roots\Sage\Config;
|
||||
use Roots\Sage\Wrapper;
|
||||
?>
|
||||
|
||||
<?php get_template_part('templates/head'); ?>
|
||||
<body <?php body_class(); ?>>
|
||||
|
||||
@@ -15,11 +22,11 @@
|
||||
<div class="wrap container" role="document">
|
||||
<div class="content row">
|
||||
<main class="main" role="main">
|
||||
<?php include sage_template_path(); ?>
|
||||
<?php include Wrapper\template_path(); ?>
|
||||
</main><!-- /.main -->
|
||||
<?php if (sage_display_sidebar()) : ?>
|
||||
<?php if (Config\display_sidebar()) : ?>
|
||||
<aside class="sidebar" role="complementary">
|
||||
<?php include sage_sidebar_path(); ?>
|
||||
<?php include Wrapper\sidebar_path(); ?>
|
||||
</aside><!-- /.sidebar -->
|
||||
<?php endif; ?>
|
||||
</div><!-- /.content -->
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
<?php
|
||||
|
||||
namespace Roots\Sage\Assets;
|
||||
|
||||
/**
|
||||
* Scripts and stylesheets
|
||||
*
|
||||
@@ -14,7 +17,7 @@
|
||||
* - An ID has been defined in config.php
|
||||
* - You're not logged in as an administrator
|
||||
*/
|
||||
function sage_asset_path($filename) {
|
||||
function asset_path($filename) {
|
||||
if (WP_ENV === 'development') {
|
||||
return get_template_directory_uri() . '/dist/' . $filename;
|
||||
}
|
||||
@@ -32,8 +35,8 @@ function sage_asset_path($filename) {
|
||||
}
|
||||
}
|
||||
|
||||
function sage_assets() {
|
||||
wp_enqueue_style('sage_css', sage_asset_path('styles/main.css'), false, null);
|
||||
function assets() {
|
||||
wp_enqueue_style('sage_css', asset_path('styles/main.css'), false, null);
|
||||
|
||||
/**
|
||||
* Grab Google CDN's latest jQuery with a protocol relative URL; fallback to local if offline
|
||||
@@ -46,21 +49,21 @@ function sage_assets() {
|
||||
|
||||
wp_register_script('jquery', '//ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.js', array(), null, true);
|
||||
|
||||
add_filter('script_loader_src', 'sage_jquery_local_fallback', 10, 2);
|
||||
add_filter('script_loader_src', __NAMESPACE__ . '\\jquery_local_fallback', 10, 2);
|
||||
}
|
||||
|
||||
if (is_single() && comments_open() && get_option('thread_comments')) {
|
||||
wp_enqueue_script('comment-reply');
|
||||
}
|
||||
|
||||
wp_enqueue_script('modernizr', sage_asset_path('scripts/modernizr.js'), array(), null, true);
|
||||
wp_enqueue_script('modernizr', asset_path('scripts/modernizr.js'), array(), null, true);
|
||||
wp_enqueue_script('jquery');
|
||||
wp_enqueue_script('sage_js', sage_asset_path('scripts/app.js'), array(), null, true);
|
||||
wp_enqueue_script('sage_js', asset_path('scripts/app.js'), array(), null, true);
|
||||
}
|
||||
add_action('wp_enqueue_scripts', 'sage_assets', 100);
|
||||
add_action('wp_enqueue_scripts', __NAMESPACE__ . '\\assets', 100);
|
||||
|
||||
// http://wordpress.stackexchange.com/a/12450
|
||||
function sage_jquery_local_fallback($src, $handle = null) {
|
||||
function jquery_local_fallback($src, $handle = null) {
|
||||
static $add_jquery_fallback = false;
|
||||
|
||||
if ($add_jquery_fallback) {
|
||||
@@ -74,14 +77,14 @@ function sage_jquery_local_fallback($src, $handle = null) {
|
||||
|
||||
return $src;
|
||||
}
|
||||
add_action('wp_head', 'sage_jquery_local_fallback');
|
||||
add_action('wp_head', __NAMESPACE__ . '\\jquery_local_fallback');
|
||||
|
||||
/**
|
||||
* Google Analytics snippet from HTML5 Boilerplate
|
||||
*
|
||||
* Cookie domain is 'auto' configured. See: http://goo.gl/VUCHKM
|
||||
*/
|
||||
function sage_google_analytics() { ?>
|
||||
function google_analytics() { ?>
|
||||
<script>
|
||||
<?php if (WP_ENV === 'production') : ?>
|
||||
(function(b,o,i,l,e,r){b.GoogleAnalyticsObject=l;b[l]||(b[l]=
|
||||
@@ -99,5 +102,5 @@ function sage_google_analytics() { ?>
|
||||
|
||||
<?php }
|
||||
if (GOOGLE_ANALYTICS_ID && (WP_ENV !== 'production' || !current_user_can('manage_options'))) {
|
||||
add_action('wp_footer', 'sage_google_analytics', 20);
|
||||
add_action('wp_footer', __NAMESPACE__ . '\\google_analytics', 20);
|
||||
}
|
||||
|
||||
@@ -1,4 +1,8 @@
|
||||
<?php
|
||||
|
||||
namespace Roots\Sage\Config;
|
||||
use Roots\Sage\Sidebar;
|
||||
|
||||
/**
|
||||
* Enable theme features
|
||||
*/
|
||||
@@ -20,24 +24,24 @@ if (!defined('WP_ENV')) {
|
||||
/**
|
||||
* Add body class if sidebar is active
|
||||
*/
|
||||
function sage_sidebar_body_class($classes) {
|
||||
if (sage_display_sidebar()) {
|
||||
function sidebar_body_class($classes) {
|
||||
if (display_sidebar()) {
|
||||
$classes[] = 'sidebar-primary';
|
||||
}
|
||||
return $classes;
|
||||
}
|
||||
add_filter('body_class', 'sage_sidebar_body_class');
|
||||
add_filter('body_class', __NAMESPACE__ . '\\sidebar_body_class');
|
||||
|
||||
/**
|
||||
* Define which pages shouldn't have the sidebar
|
||||
*
|
||||
* See lib/sidebar.php for more details
|
||||
*/
|
||||
function sage_display_sidebar() {
|
||||
function display_sidebar() {
|
||||
static $display;
|
||||
|
||||
if (!isset($display)) {
|
||||
$sidebar_config = new Sage_Sidebar(
|
||||
$sidebar_config = new Sidebar\Sage_Sidebar(
|
||||
/**
|
||||
* Conditional tag checks (http://codex.wordpress.org/Conditional_Tags)
|
||||
* Any of these conditional tags that return true won't show the sidebar
|
||||
|
||||
@@ -1,8 +1,11 @@
|
||||
<?php
|
||||
|
||||
namespace Roots\Sage\Extras;
|
||||
|
||||
/**
|
||||
* Clean up the_excerpt()
|
||||
*/
|
||||
function sage_excerpt_more() {
|
||||
function excerpt_more() {
|
||||
return ' … <a href="' . get_permalink() . '">' . __('Continued', 'sage') . '</a>';
|
||||
}
|
||||
add_filter('excerpt_more', 'sage_excerpt_more');
|
||||
add_filter('excerpt_more', __NAMESPACE__ . '\\excerpt_more');
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
<?php
|
||||
|
||||
namespace Roots\Sage\Gallery;
|
||||
|
||||
/**
|
||||
* Clean up gallery_shortcode()
|
||||
*
|
||||
@@ -7,7 +10,7 @@
|
||||
*
|
||||
* @link http://getbootstrap.com/components/#thumbnails
|
||||
*/
|
||||
function sage_gallery($attr) {
|
||||
function gallery($attr) {
|
||||
$post = get_post();
|
||||
|
||||
static $instance = 0;
|
||||
@@ -115,15 +118,15 @@ function sage_gallery($attr) {
|
||||
}
|
||||
if (current_theme_supports('bootstrap-gallery')) {
|
||||
remove_shortcode('gallery');
|
||||
add_shortcode('gallery', 'sage_gallery');
|
||||
add_shortcode('gallery', __NAMESPACE__ . '\\gallery');
|
||||
add_filter('use_default_gallery_style', '__return_null');
|
||||
}
|
||||
|
||||
/**
|
||||
* Add class="thumbnail img-thumbnail" to attachment items
|
||||
*/
|
||||
function sage_attachment_link_class($html) {
|
||||
function attachment_link_class($html) {
|
||||
$html = str_replace('<a', '<a class="thumbnail img-thumbnail"', $html);
|
||||
return $html;
|
||||
}
|
||||
add_filter('wp_get_attachment_link', 'sage_attachment_link_class', 10, 1);
|
||||
add_filter('wp_get_attachment_link', __NAMESPACE__ . '\\attachment_link_class', 10, 1);
|
||||
|
||||
11
lib/init.php
11
lib/init.php
@@ -1,8 +1,11 @@
|
||||
<?php
|
||||
|
||||
namespace Roots\Sage\Init;
|
||||
|
||||
/**
|
||||
* Sage initial setup and constants
|
||||
*/
|
||||
function sage_setup() {
|
||||
function setup() {
|
||||
// Make theme available for translation
|
||||
// Community translations can be found at https://github.com/roots/sage-translations
|
||||
load_theme_textdomain('sage', get_template_directory() . '/lang');
|
||||
@@ -34,12 +37,12 @@ function sage_setup() {
|
||||
// Tell the TinyMCE editor to use a custom stylesheet
|
||||
add_editor_style('/dist/css/editor-style.css');
|
||||
}
|
||||
add_action('after_setup_theme', 'sage_setup');
|
||||
add_action('after_setup_theme', __NAMESPACE__ . '\\setup');
|
||||
|
||||
/**
|
||||
* Register sidebars
|
||||
*/
|
||||
function sage_widgets_init() {
|
||||
function widgets_init() {
|
||||
register_sidebar(array(
|
||||
'name' => __('Primary', 'sage'),
|
||||
'id' => 'sidebar-primary',
|
||||
@@ -58,4 +61,4 @@ function sage_widgets_init() {
|
||||
'after_title' => '</h3>',
|
||||
));
|
||||
}
|
||||
add_action('widgets_init', 'sage_widgets_init');
|
||||
add_action('widgets_init', __NAMESPACE__ . '\\widgets_init');
|
||||
|
||||
25
lib/nav.php
25
lib/nav.php
@@ -1,4 +1,7 @@
|
||||
<?php
|
||||
|
||||
namespace Roots\Sage\Nav;
|
||||
|
||||
/**
|
||||
* Cleaner walker for wp_nav_menu()
|
||||
*
|
||||
@@ -10,7 +13,7 @@
|
||||
* <li class="menu-home"><a href="/">Home</a></li>
|
||||
* <li class="menu-sample-page"><a href="/sample-page/">Sample Page</a></li>
|
||||
*/
|
||||
class Sage_Nav_Walker extends Walker_Nav_Menu {
|
||||
class Sage_Nav_Walker extends \Walker_Nav_Menu {
|
||||
function check_current($classes) {
|
||||
return preg_match('/(current[-_])|active|dropdown/', $classes);
|
||||
}
|
||||
@@ -53,7 +56,7 @@ class Sage_Nav_Walker extends Walker_Nav_Menu {
|
||||
* Remove the id="" on nav menu items
|
||||
* Return 'menu-slug' for nav menu classes
|
||||
*/
|
||||
function sage_nav_menu_css_class($classes, $item) {
|
||||
function nav_menu_css_class($classes, $item) {
|
||||
$slug = sanitize_title($item->title);
|
||||
$classes = preg_replace('/(current(-menu-|[-_]page[-_])(item|parent|ancestor))/', 'active', $classes);
|
||||
$classes = preg_replace('/^((menu|page)[-_\w+]+)+/', '', $classes);
|
||||
@@ -62,9 +65,9 @@ function sage_nav_menu_css_class($classes, $item) {
|
||||
|
||||
$classes = array_unique($classes);
|
||||
|
||||
return array_filter($classes, 'is_element_empty');
|
||||
return array_filter($classes, 'Roots\\Sage\\Utils\\is_element_empty');
|
||||
}
|
||||
add_filter('nav_menu_css_class', 'sage_nav_menu_css_class', 10, 2);
|
||||
add_filter('nav_menu_css_class', __NAMESPACE__ . '\\nav_menu_css_class', 10, 2);
|
||||
add_filter('nav_menu_item_id', '__return_null');
|
||||
|
||||
/**
|
||||
@@ -73,19 +76,19 @@ add_filter('nav_menu_item_id', '__return_null');
|
||||
* Remove the container
|
||||
* Use Sage_Nav_Walker() by default
|
||||
*/
|
||||
function sage_nav_menu_args($args = '') {
|
||||
$sage_nav_menu_args = array();
|
||||
function nav_menu_args($args = '') {
|
||||
$nav_menu_args = array();
|
||||
|
||||
$sage_nav_menu_args['container'] = false;
|
||||
$nav_menu_args['container'] = false;
|
||||
|
||||
if (!$args['items_wrap']) {
|
||||
$sage_nav_menu_args['items_wrap'] = '<ul class="%2$s">%3$s</ul>';
|
||||
$nav_menu_args['items_wrap'] = '<ul class="%2$s">%3$s</ul>';
|
||||
}
|
||||
|
||||
if (!$args['depth']) {
|
||||
$sage_nav_menu_args['depth'] = 2;
|
||||
$nav_menu_args['depth'] = 2;
|
||||
}
|
||||
|
||||
return array_merge($args, $sage_nav_menu_args);
|
||||
return array_merge($args, $nav_menu_args);
|
||||
}
|
||||
add_filter('wp_nav_menu_args', 'sage_nav_menu_args');
|
||||
add_filter('wp_nav_menu_args', __NAMESPACE__ . '\\nav_menu_args');
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
<?php
|
||||
|
||||
namespace Roots\Sage\Sidebar;
|
||||
|
||||
/**
|
||||
* Determines whether or not to display the sidebar based on an array of conditional tags or page templates.
|
||||
*
|
||||
|
||||
@@ -1,8 +1,11 @@
|
||||
<?php
|
||||
|
||||
namespace Roots\Sage\Titles;
|
||||
|
||||
/**
|
||||
* Page titles
|
||||
*/
|
||||
function sage_title() {
|
||||
function title() {
|
||||
if (is_home()) {
|
||||
if (get_option('page_for_posts', true)) {
|
||||
return get_the_title(get_option('page_for_posts', true));
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
<?php
|
||||
|
||||
namespace Roots\Sage\Utils;
|
||||
|
||||
/**
|
||||
* Utility functions
|
||||
*/
|
||||
@@ -8,17 +11,17 @@ function is_element_empty($element) {
|
||||
}
|
||||
|
||||
// Tell WordPress to use searchform.php from the templates/ directory
|
||||
function sage_get_search_form() {
|
||||
function get_search_form() {
|
||||
$form = '';
|
||||
locate_template('/templates/searchform.php', true, false);
|
||||
return $form;
|
||||
}
|
||||
add_filter('get_search_form', 'sage_get_search_form');
|
||||
add_filter('get_search_form', __NAMESPACE__ . '\\get_search_form');
|
||||
|
||||
/**
|
||||
* Add page slug to body_class() classes if it doesn't exist
|
||||
*/
|
||||
function sage_body_class($classes) {
|
||||
function body_class($classes) {
|
||||
// Add post/page slug
|
||||
if (is_single() || is_page() && !is_front_page()) {
|
||||
if (!in_array(basename(get_permalink()), $classes)) {
|
||||
@@ -27,4 +30,4 @@ function sage_body_class($classes) {
|
||||
}
|
||||
return $classes;
|
||||
}
|
||||
add_filter('body_class', 'sage_body_class');
|
||||
add_filter('body_class', __NAMESPACE__ . '\\body_class');
|
||||
|
||||
@@ -1,15 +1,19 @@
|
||||
<?php
|
||||
|
||||
namespace Roots\Sage\Wrapper;
|
||||
|
||||
/**
|
||||
* Theme wrapper
|
||||
*
|
||||
* @link http://roots.io/getting-started/theme-wrapper/
|
||||
* @link http://scribu.net/wordpress/theme-wrappers.html
|
||||
*/
|
||||
function sage_template_path() {
|
||||
|
||||
function template_path() {
|
||||
return Sage_Wrapping::$main_template;
|
||||
}
|
||||
|
||||
function sage_sidebar_path() {
|
||||
function sidebar_path() {
|
||||
return new Sage_Wrapping('templates/sidebar.php');
|
||||
}
|
||||
|
||||
@@ -57,4 +61,4 @@ class Sage_Wrapping {
|
||||
return new Sage_Wrapping();
|
||||
}
|
||||
}
|
||||
add_filter('template_include', array('Sage_Wrapping', 'wrap'), 99);
|
||||
add_filter('template_include', array(__NAMESPACE__ . '\\Sage_Wrapping', 'wrap'), 99);
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
<?php use Roots\Sage\Nav; ?>
|
||||
|
||||
<header class="banner navbar navbar-default navbar-static-top" role="banner">
|
||||
<div class="container">
|
||||
<div class="navbar-header">
|
||||
@@ -13,7 +15,7 @@
|
||||
<nav class="collapse navbar-collapse" role="navigation">
|
||||
<?php
|
||||
if (has_nav_menu('primary_navigation')) :
|
||||
wp_nav_menu(array('theme_location' => 'primary_navigation', 'walker' => new Sage_Nav_Walker(), 'menu_class' => 'nav navbar-nav'));
|
||||
wp_nav_menu(array('theme_location' => 'primary_navigation', 'walker' => new Nav\Sage_Nav_Walker(), 'menu_class' => 'nav navbar-nav'));
|
||||
endif;
|
||||
?>
|
||||
</nav>
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
<?php use Roots\Sage\Titles; ?>
|
||||
|
||||
<div class="page-header">
|
||||
<h1>
|
||||
<?php echo sage_title(); ?>
|
||||
<?php echo Titles\title(); ?>
|
||||
</h1>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user