2016-01-20 16:02:53 +00:00
|
|
|
<?php
|
|
|
|
/**
|
|
|
|
* Storefront Class
|
|
|
|
*
|
|
|
|
* @author WooThemes
|
|
|
|
* @since 2.0.0
|
2016-02-19 16:57:56 +00:00
|
|
|
* @package storefront
|
2016-01-20 16:02:53 +00:00
|
|
|
*/
|
|
|
|
|
|
|
|
if ( ! defined( 'ABSPATH' ) ) {
|
|
|
|
exit;
|
|
|
|
}
|
|
|
|
|
|
|
|
if ( ! class_exists( 'Storefront' ) ) :
|
|
|
|
|
|
|
|
/**
|
2016-02-19 16:57:56 +00:00
|
|
|
* The main Storefront class
|
2016-01-20 16:02:53 +00:00
|
|
|
*/
|
2016-02-19 16:57:56 +00:00
|
|
|
class Storefront {
|
2016-01-20 16:02:53 +00:00
|
|
|
|
|
|
|
/**
|
2016-02-19 16:57:56 +00:00
|
|
|
* Setup class.
|
|
|
|
*
|
|
|
|
* @since 1.0
|
2016-01-20 16:02:53 +00:00
|
|
|
*/
|
2016-02-19 16:57:56 +00:00
|
|
|
public function __construct() {
|
|
|
|
add_action( 'after_setup_theme', array( $this, 'setup' ) );
|
|
|
|
add_action( 'widgets_init', array( $this, 'widgets_init' ) );
|
|
|
|
add_action( 'wp_enqueue_scripts', array( $this, 'scripts' ), 10 );
|
|
|
|
add_action( 'wp_enqueue_scripts', array( $this, 'child_scripts' ), 30 ); // After WooCommerce.
|
|
|
|
add_filter( 'body_class', array( $this, 'body_classes' ) );
|
|
|
|
add_filter( 'wp_page_menu_args', array( $this, 'page_menu_args' ) );
|
2016-01-20 16:02:53 +00:00
|
|
|
}
|
|
|
|
|
2016-02-19 16:57:56 +00:00
|
|
|
/**
|
|
|
|
* Sets up theme defaults and registers support for various WordPress features.
|
2016-01-20 16:02:53 +00:00
|
|
|
*
|
2016-02-19 16:57:56 +00:00
|
|
|
* Note that this function is hooked into the after_setup_theme hook, which
|
|
|
|
* runs before the init hook. The init hook is too late for some features, such
|
|
|
|
* as indicating support for post thumbnails.
|
2016-01-20 16:02:53 +00:00
|
|
|
*/
|
2016-02-19 16:57:56 +00:00
|
|
|
public function setup() {
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Set the content width based on the theme's design and stylesheet.
|
|
|
|
*/
|
|
|
|
if ( ! isset( $content_width ) ) {
|
|
|
|
$content_width = 980; /* pixels */
|
|
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Load Localisation files.
|
|
|
|
*
|
|
|
|
* Note: the first-loaded translation file overrides any following ones if the same translation is present.
|
|
|
|
*/
|
|
|
|
|
|
|
|
// Loads wp-content/languages/themes/storefront-it_IT.mo.
|
|
|
|
load_theme_textdomain( 'storefront', trailingslashit( WP_LANG_DIR ) . 'themes/' );
|
|
|
|
|
|
|
|
// Loads wp-content/themes/child-theme-name/languages/it_IT.mo.
|
|
|
|
load_theme_textdomain( 'storefront', get_stylesheet_directory() . '/languages' );
|
|
|
|
|
|
|
|
// Loads wp-content/themes/storefront/languages/it_IT.mo.
|
|
|
|
load_theme_textdomain( 'storefront', get_template_directory() . '/languages' );
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Add default posts and comments RSS feed links to head.
|
|
|
|
*/
|
|
|
|
add_theme_support( 'automatic-feed-links' );
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Enable support for Post Thumbnails on posts and pages.
|
|
|
|
*
|
|
|
|
* @link http://codex.wordpress.org/Function_Reference/add_theme_support#Post_Thumbnails
|
|
|
|
*/
|
|
|
|
add_theme_support( 'post-thumbnails' );
|
|
|
|
|
|
|
|
// This theme uses wp_nav_menu() in two locations.
|
|
|
|
register_nav_menus( array(
|
|
|
|
'primary' => __( 'Primary Menu', 'storefront' ),
|
|
|
|
'secondary' => __( 'Secondary Menu', 'storefront' ),
|
|
|
|
'handheld' => __( 'Handheld Menu', 'storefront' ),
|
|
|
|
) );
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Switch default core markup for search form, comment form, comments, galleries, captions and widgets
|
|
|
|
* to output valid HTML5.
|
|
|
|
*/
|
|
|
|
add_theme_support( 'html5', array(
|
|
|
|
'search-form',
|
|
|
|
'comment-form',
|
|
|
|
'comment-list',
|
|
|
|
'gallery',
|
|
|
|
'caption',
|
|
|
|
'widgets',
|
|
|
|
) );
|
|
|
|
|
|
|
|
// Setup the WordPress core custom background feature.
|
|
|
|
add_theme_support( 'custom-background', apply_filters( 'storefront_custom_background_args', array(
|
|
|
|
'default-color' => apply_filters( 'storefront_default_background_color', 'f5f5f5' ),
|
|
|
|
'default-image' => '',
|
|
|
|
) ) );
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Add support for the Site Logo plugin and the site logo functionality in JetPack
|
|
|
|
* https://github.com/automattic/site-logo
|
|
|
|
* http://jetpack.me/
|
|
|
|
*/
|
|
|
|
add_theme_support( 'site-logo', array( 'size' => 'full' ) );
|
|
|
|
|
|
|
|
// Declare WooCommerce support.
|
|
|
|
add_theme_support( 'woocommerce' );
|
|
|
|
|
|
|
|
// Declare support for title theme feature.
|
|
|
|
add_theme_support( 'title-tag' );
|
|
|
|
}
|
2016-01-20 16:02:53 +00:00
|
|
|
|
|
|
|
/**
|
2016-02-19 16:57:56 +00:00
|
|
|
* Register widget area.
|
2016-01-20 16:02:53 +00:00
|
|
|
*
|
2016-02-19 16:57:56 +00:00
|
|
|
* @link http://codex.wordpress.org/Function_Reference/register_sidebar
|
2016-01-20 16:02:53 +00:00
|
|
|
*/
|
2016-02-19 16:57:56 +00:00
|
|
|
public function widgets_init() {
|
|
|
|
register_sidebar( array(
|
|
|
|
'name' => __( 'Sidebar', 'storefront' ),
|
|
|
|
'id' => 'sidebar-1',
|
|
|
|
'description' => '',
|
|
|
|
'before_widget' => '<aside id="%1$s" class="widget %2$s">',
|
|
|
|
'after_widget' => '</aside>',
|
|
|
|
'before_title' => '<h3 class="widget-title">',
|
|
|
|
'after_title' => '</h3>',
|
|
|
|
) );
|
2016-01-20 16:02:53 +00:00
|
|
|
|
|
|
|
register_sidebar( array(
|
2016-02-19 16:57:56 +00:00
|
|
|
'name' => __( 'Below Header', 'storefront' ),
|
|
|
|
'id' => 'header-1',
|
|
|
|
'description' => 'Widgets added to this region will appear beneath the header and above the main content.',
|
|
|
|
'before_widget' => '<aside id="%1$s" class="widget %2$s">',
|
|
|
|
'after_widget' => '</aside>',
|
|
|
|
'before_title' => '<h3 class="widget-title">',
|
|
|
|
'after_title' => '</h3>',
|
|
|
|
) );
|
|
|
|
|
|
|
|
$footer_widget_regions = apply_filters( 'storefront_footer_widget_regions', 4 );
|
|
|
|
|
|
|
|
for ( $i = 1; $i <= intval( $footer_widget_regions ); $i++ ) {
|
|
|
|
register_sidebar( array(
|
|
|
|
'name' => sprintf( __( 'Footer %d', 'storefront' ), $i ),
|
|
|
|
'id' => sprintf( 'footer-%d', $i ),
|
|
|
|
'description' => sprintf( __( 'Widgetized Footer Region %d.', 'storefront' ), $i ),
|
|
|
|
'before_widget' => '<aside id="%1$s" class="widget %2$s">',
|
|
|
|
'after_widget' => '</aside>',
|
|
|
|
'before_title' => '<h3>',
|
|
|
|
'after_title' => '</h3>',
|
|
|
|
)
|
|
|
|
);
|
|
|
|
}
|
2016-01-20 16:02:53 +00:00
|
|
|
}
|
|
|
|
|
2016-02-19 16:57:56 +00:00
|
|
|
/**
|
|
|
|
* Enqueue scripts and styles.
|
|
|
|
*
|
|
|
|
* @since 1.0.0
|
|
|
|
*/
|
|
|
|
public function scripts() {
|
|
|
|
global $storefront_version;
|
2016-01-20 16:02:53 +00:00
|
|
|
|
2016-02-19 16:57:56 +00:00
|
|
|
wp_enqueue_style( 'storefront-style', get_template_directory_uri() . '/style.css', '', $storefront_version );
|
2016-01-20 16:02:53 +00:00
|
|
|
|
2016-02-19 16:57:56 +00:00
|
|
|
wp_style_add_data( 'storefront-style', 'rtl', 'replace' );
|
2016-01-20 16:02:53 +00:00
|
|
|
|
2016-02-19 16:57:56 +00:00
|
|
|
wp_enqueue_script( 'storefront-navigation', get_template_directory_uri() . '/assets/js/navigation.min.js', array( 'jquery' ), '20120206', true );
|
2016-01-20 16:02:53 +00:00
|
|
|
|
2016-02-19 16:57:56 +00:00
|
|
|
wp_enqueue_script( 'storefront-skip-link-focus-fix', get_template_directory_uri() . '/assets/js/skip-link-focus-fix.min.js', array(), '20130115', true );
|
2016-01-20 16:02:53 +00:00
|
|
|
|
2016-02-19 16:57:56 +00:00
|
|
|
if ( is_singular() && comments_open() && get_option( 'thread_comments' ) ) {
|
|
|
|
wp_enqueue_script( 'comment-reply' );
|
|
|
|
}
|
2016-01-20 16:02:53 +00:00
|
|
|
}
|
|
|
|
|
2016-02-19 16:57:56 +00:00
|
|
|
/**
|
|
|
|
* Enqueue child theme stylesheet.
|
|
|
|
* A separate function is required as the child theme css needs to be enqueued _after_ the parent theme
|
|
|
|
* primary css and the separate WooCommerce css.
|
|
|
|
*
|
|
|
|
* @since 1.5.3
|
|
|
|
*/
|
|
|
|
public function child_scripts() {
|
|
|
|
if ( is_child_theme() ) {
|
|
|
|
wp_enqueue_style( 'storefront-child-style', get_stylesheet_uri(), '' );
|
|
|
|
}
|
2016-01-20 16:02:53 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
2016-02-19 16:57:56 +00:00
|
|
|
* Get our wp_nav_menu() fallback, wp_page_menu(), to show a home link.
|
|
|
|
*
|
|
|
|
* @param array $args Configuration arguments.
|
|
|
|
* @return array
|
2016-01-20 16:02:53 +00:00
|
|
|
*/
|
2016-02-19 16:57:56 +00:00
|
|
|
public function page_menu_args( $args ) {
|
|
|
|
$args['show_home'] = true;
|
|
|
|
return $args;
|
2016-01-20 16:02:53 +00:00
|
|
|
}
|
|
|
|
|
2016-02-19 16:57:56 +00:00
|
|
|
/**
|
|
|
|
* Adds custom classes to the array of body classes.
|
|
|
|
*
|
|
|
|
* @param array $classes Classes for the body element.
|
|
|
|
* @return array
|
|
|
|
*/
|
|
|
|
public function body_classes( $classes ) {
|
|
|
|
// Adds a class of group-blog to blogs with more than 1 published author.
|
|
|
|
if ( is_multi_author() ) {
|
|
|
|
$classes[] = 'group-blog';
|
|
|
|
}
|
|
|
|
|
|
|
|
if ( ! function_exists( 'woocommerce_breadcrumb' ) ) {
|
|
|
|
$classes[] = 'no-wc-breadcrumb';
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* What is this?!
|
|
|
|
* Take the blue pill, close this file and forget you saw the following code.
|
|
|
|
* Or take the red pill, filter storefront_make_me_cute and see how deep the rabbit hole goes...
|
|
|
|
*/
|
|
|
|
$cute = apply_filters( 'storefront_make_me_cute', false );
|
|
|
|
|
|
|
|
if ( true === $cute ) {
|
|
|
|
$classes[] = 'storefront-cute';
|
|
|
|
}
|
|
|
|
|
|
|
|
// If our main sidebar doesn't contain widgets, adjust the layout to be full-width.
|
|
|
|
if ( ! is_active_sidebar( 'sidebar-1' ) ) {
|
|
|
|
$classes[] = 'storefront-full-width-content';
|
|
|
|
}
|
|
|
|
|
|
|
|
return $classes;
|
2016-01-20 16:02:53 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
endif;
|
|
|
|
|
2016-02-19 16:57:56 +00:00
|
|
|
return new Storefront();
|