-
Notifications
You must be signed in to change notification settings - Fork 10
Component Theme
alex_prokopenko edited this page Jan 16, 2018
·
3 revisions
Theme component is defined with Theme.php
class.
This component defines main theme setup methods and configurations. You can modify existing properties/methods or add new in your theme child class to re-configure your theme.
Property | Type | Default | Description |
---|---|---|---|
$version | float | 1.0 | Theme version number |
$auto_title | boolean | true | Let WordPress manage the document title. Enables add_theme_support('title-tag'); . |
$post_thumbnails | boolean | true | Enable support for Post Thumbnails on posts and pages. |
$upload_mime_types | array | Add allowed mime types for upload. Add svg by default. | |
$available_image_sizes | array | Available image sizes in Media upload dialog to insert correctly resized image. Add standard sizes by default. | |
$jpeg_quality | int | 100 | JPEG images compression quality value. |
$post_formats | array | Enable support for Post Formats. | |
$show_admin_bar | boolean | true | Enable/disable admin bar |
$html5 | array | Switch default core markup for search form, comment form, and comments to output valid HTML5. |
Default values for complex properties:
<?php
class Theme {
public $upload_mime_types = array(
'svg' => 'image/svg+xml',
);
public $available_image_sizes = array(
'thumbnail' => 'Thumbnail',
'medium' => 'Medium',
'large' => 'Large',
'full' => 'Full Size',
);
public $post_formats = array(
'aside',
'image',
'video',
'quote',
'link',
);
public $html5 = array(
'search-form',
'comment-form',
'comment-list',
'gallery',
'caption',
);
// ...
}
Method / Called in | Description |
---|---|
__construct | Init theme hooks, call feature registration methods. Clean up some unnecessary WordPress stuff. |
init_views_templates construct |
Init new Template Hierarchy based on "views" folder and load Views engine. |
init construct |
Called right after constructor. You can define/call additional actions here in child class |
activate (a)after_switch_theme |
Theme activation hook |
deactivate (a)switch_theme |
Theme deactivation hook. |
theme_setup (a)after_setup_theme |
Main theme setup callback in WordPress. Register different features based on Property values. |
register_assets (a)wp_enqueue_scripts |
You can register your assets here. Have to be defined in child class. |
register_assets_css | Register array of css files one-by-one (helper method). |
register_assets_scripts | Register array of javascript files one-by-one (helper method). |
register_sidebar (a)widgets_init |
Sidebars have to be defined here. |
register_widgets (a)widgets_init |
Widgets have to be defined here. |
register_post_types construct |
Post Types should be registered here |
register_taxonomies construct |
Taxonomies should be registered here |
support_plugins construct |
Init class instances for custom features provided by 3d-party plugins. |
filter_jpeg_quality (f)jpeg_quality |
Filter JPEG image quality compression to prevent image quality loss. |
add_upload_mimes (f)upload_mimes |
Apply $upload_mime_types property. |
image_size_names_choose (f)image_size_names_choose |
Apply $available_image_sizes property. |
remove_base_stylesheet (a)wp_enqueue_script |
Remove default stylesheet from attached theme scripts |
remove_assets_query_string (f)script_loader_src (f)style_loader_src |
Remove query string from static resources (Google recommendations) |
(a) is an action hook;
(f) is a filter hook
<?php
namespace Boilerplate\Theme;
use ... // import full class names to use as short form
/**
* Theme main entry point
*
* Theme setup functions, assets, post types, taxonomies declarations
*/
class Theme extends \JustCoded\WP\Framework\Theme {
/**
* Enable support for Post Formats.
*
* Set FALSE to disable post formats
*
* See https://developer.wordpress.org/themes/functionality/post-formats/
*
* @var array $post_formats
*/
public $post_formats = array(
'image',
'video',
);
/**
* Additional classes initialize
*/
public function init() {
// my custom hooks can be added here
}
/**
* Main theme setup function.
* Called on after_theme_setup action hook
*/
public function theme_setup() {
parent::theme_setup();
// This theme uses wp_nav_menu() in one location.
register_nav_menus( array(
'primary' => esc_html__( 'Primary Menu', 'boilerplate' ),
) );
}
/**
* Register theme sidebars
*
* Called on 'widgets_init'
*/
public function register_sidebars() {
register_sidebar( array(
'name' => esc_html__( 'Sidebar', 'boilerplate' ),
'id' => 'sidebar-1',
'description' => '',
'before_widget' => '<aside id="%1$s" class="widget %2$s">',
'after_widget' => '</aside>',
'before_title' => '<h2 class="widget-title">',
'after_title' => '</h2>',
) );
}
/**
* Register styles and scripts
*
* Called on 'wp_enqueue_scripts'
*/
public function register_assets() {
// Stylesheets.
$this->register_assets_css( array(
'styles.css',
) );
// Scripts.
$this->register_assets_scripts( array(
'jquery.main.js',
), array( 'jquery' ) );
if ( is_singular() && comments_open() && get_option( 'thread_comments' ) ) {
wp_enqueue_script( 'comment-reply' );
}
}
/**
* Register post types
*/
public function register_post_types() {
Employee::instance();
}
/**
* Register post types
*/
public function register_taxonomies() {
Department::instance();
}
/**
* Register custo widgets
*/
public function register_widgets() {
if ( SiteOrigin_Panels::widgets_bundle_active() ) {
register_widget( '\Boilerplate\Theme\Widgets\Hero_Slider_Widget' );
}
}
/**
* Loads hooks for 3d-party plugins.
*/
public function support_plugins() {
Just_Responsive_Images::instance();
if ( Autoptimize::check_requirements() ) {
Autoptimize::instance();
}
if ( Contact_Form7::check_requirements() ) {
Contact_Form7::instance();
}
}
}