* add_action( 'after_setup_theme', 'my_child_theme_setup' );
* function my_child_theme_setup() {
* // We are providing our own filter for excerpt_length (or using the unfiltered value)
* remove_filter( 'excerpt_length', 'catchevolution_excerpt_length' );
* ...
* }
*
*
* For more information on hooks, actions, and filters, see http://codex.wordpress.org/Plugin_API.
*
* @package Catch Themes
* @subpackage Catch_Evolution
* @since Catch Evolution 1.0
*/
if ( ! function_exists( 'catchevolution_content_width' ) ) :
/**
* Set the content width in pixels, based on the theme's design and stylesheet.
*
* Priority 0 to make it available to lower priority callbacks.
*
* @global int $content_width
*/
function catchevolution_content_width() {
$GLOBALS['content_width'] = apply_filters( 'catchevolution_content_width', 678 );
}
endif;
add_action( 'after_setup_theme', 'catchevolution_content_width', 0 );
if ( ! function_exists( 'catchevolution_template_redirect' ) ) :
/**
* Set the content width in pixels, based on the theme's design and stylesheet for different value other than the default one
*
* @global int $content_width
*/
function catchevolution_template_redirect() {
$layout = catchevolution_get_theme_layout();
if ( 'three-columns' == $layout ) {
$GLOBALS['content_width'] = 454; /* pixels */
}
}
endif;
add_action( 'template_redirect', 'catchevolution_template_redirect' );
/**
* Tell WordPress to run catchevolution_setup() when the 'after_setup_theme' hook is run.
*/
add_action( 'after_setup_theme', 'catchevolution_setup' );
if ( ! function_exists( 'catchevolution_setup' ) ):
/**
* Sets up theme defaults and registers support for various WordPress features.
*
* 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 post thumbnails.
*
* To override catchevolution_setup() in a child theme, add your own catchevolution_setup to your child theme's
* functions.php file.
*
* @uses load_theme_textdomain() For translation/localization support.
* @uses add_editor_style() To style the visual editor.
* @uses add_theme_support() To add support for post thumbnails, automatic feed links,custom headers and backgrounds.
* @uses register_nav_menus() To add support for navigation menus.
* @uses register_default_headers() To register the default custom header images provided with the theme.
* @uses set_post_thumbnail_size() To set a custom post thumbnail size.
*
* @since Catch Evolution 1.0
*/
function catchevolution_setup() {
/**
* Make theme available for translation
* Translations can be filed in the /languages/ directory
* If you're building a theme based on Catch Evolution, use a find and replace
* to change 'catch-evolution' to the name of your theme in all the template files
*/
load_theme_textdomain( 'catch-evolution', get_template_directory() . '/languages' );
/**
* Add callback for custom TinyMCE editor stylesheets. (editor-style.css)
* @see http://codex.wordpress.org/Function_Reference/add_editor_style
*/
add_editor_style();
// Add default posts and comments RSS feed links to
.
add_theme_support( 'automatic-feed-links' );
/**
* Let WordPress manage the document title.
* By adding theme support, we declare that this theme does not use a
* hard-coded tag in the document head, and expect WordPress to
* provide it for us.
*/
add_theme_support( 'title-tag' );
// Add support for a variety of post formats
add_theme_support( 'post-formats', array( 'aside', 'link', 'gallery', 'status', 'quote', 'image', 'chat' ) );
// Load up theme options defaults
require( get_template_directory() . '/inc/panel/catchevolution-themeoptions-defaults.php' );
// Load up our theme options page and related code.
require( get_template_directory() . '/inc/panel/theme-options.php' );
// Register Sidebar and Widget.
require( get_template_directory() . '/inc/catchevolution-widgets.php' );
// Load up our Catch Evolution Pro's Functions
require( get_template_directory() . '/inc/catchevolution-functions.php' );
// Load up our Catch Evolution Pro's metabox
require( get_template_directory() . '/inc/catchevolution-metabox.php' );
/**
* This feature enables Jetpack plugin Infinite Scroll
*/
add_theme_support( 'infinite-scroll', array(
'type' => 'click',
'container' => 'content',
'footer_widgets' => array( 'sidebar-2', 'sidebar-3', 'sidebar-4' ),
'footer' => 'page',
) );
/**
* This feature enables custom-menus support for a theme.
* @see http://codex.wordpress.org/Function_Reference/register_nav_menus
*/
register_nav_menus(array(
'top' => __( 'Fixed Header Top Menu', 'catch-evolution' ),
'primary' => __( 'Primary Menu', 'catch-evolution' ),
'secondary' => __( 'Secondary Menu', 'catch-evolution' ),
'footer' => __( 'Footer Menu', 'catch-evolution' )
) );
// Add support for custom backgrounds
add_theme_support( 'custom-background' );
/**
* This feature enables post-thumbnail support for a theme.
* @see http://codex.wordpress.org/Function_Reference/add_theme_support#Post_Thumbnails
*/
add_theme_support( 'post-thumbnails' );
//Featued Posts for Normal Width
add_image_size( 'featured-slider', 754, 400, true ); // Used for featured posts if a large-feature doesn't exist
//Featured Posts for Full Width
add_image_size( 'featured-slider-larger', 1190, 500, true ); // Used for featured posts if a large-feature doesn't exist
//Plugin Support for WooCommerce
catchevolution_woocommerce_activated();
//@remove Remove check when WordPress 4.8 is released
if ( function_exists( 'has_custom_logo' ) ) {
/**
* Setup Custom Logo Support for theme
* Supported from WordPress version 4.5 onwards
* More Info: https://make.wordpress.org/core/2016/03/10/custom-logo/
*/
add_theme_support( 'custom-logo' );
}
}
endif; // catchevolution_setup
if ( ! function_exists( 'catchevolution_get_theme_layout' ) ) :
/**
* Returns Theme Layout prioritizing the meta box layouts
*
* @uses get_options
*
* @action wp_head
*
* @since Catch Evolution Pro 3.5
*/
function catchevolution_get_theme_layout() {
$id = '';
global $post, $wp_query;
// Front page displays in Reading Settings
$page_on_front = get_option('page_on_front') ;
$page_for_posts = get_option('page_for_posts');
// Get Page ID outside Loop
$page_id = $wp_query->get_queried_object_id();
// Blog Page or Front Page setting in Reading Settings
if ( $page_id == $page_for_posts || $page_id == $page_on_front ) {
$id = $page_id;
}
elseif ( is_singular() ) {
if ( is_attachment() ) {
$id = $post->post_parent;
}
else {
$id = $post->ID;
}
}
//Get appropriate metabox value of layout
if ( '' != $id ) {
$layout = get_post_meta( $id, 'catchevolution-sidebarlayout', true );
}
else {
$layout = 'default';
}
//Load options data
global $catchevolution_options_settings;
$options = $catchevolution_options_settings;
//check empty and load default
if ( empty( $layout ) || 'default' == $layout ) {
$layout = $options['sidebar_layout'];
}
return $layout;
}
endif; //catchevolution_get_theme_layout
/**
* Adds support for a custom header image.
*/
require( get_template_directory() . '/inc/custom-header.php' );
if ( ! function_exists( 'catchevolution_woocommerce_activated' ) ) :
/**
* Add Suport for WooCommerce Plugin
*/
function catchevolution_woocommerce_activated() {
if ( class_exists( 'woocommerce' ) ) {
add_theme_support( 'woocommerce' );
require( get_template_directory() . '/inc/catchevolution-woocommerce.php' );
}
}
endif; // catchevolution_woocommerce_activated
/**
* Filters the_category() to output html 5 valid rel tag
*
* @param string $text
* @return string
*/
function catchevolution_html_validate( $text ) {
$string = 'rel="tag"';
$replace = 'rel="category"';
$text = str_replace( $replace, $string, $text );
return $text;
}
add_filter( 'the_category', 'catchevolution_html_validate' );
add_filter( 'wp_list_categories', 'catchevolution_html_validate' );
/**
* Migrate Logo to New WordPress core Custom Logo
*
* Runs if version number saved in theme_mod "logo_version" doesn't match current theme version.
*/
function catchevolution_logo_migrate() {
$ver = get_theme_mod( 'logo_version', false );
// Return if update has already been run
if ( version_compare( $ver, '3.2' ) >= 0 ) {
return;
}
/**
* Get Theme Options Values
*/
global $catchevolution_options_settings;
$options = $catchevolution_options_settings;
// If a logo has been set previously, update to use logo feature introduced in WordPress 4.5
if ( function_exists( 'the_custom_logo' ) ) {
if ( isset( $options['featured_logo_header'] ) && '' != $options['featured_logo_header'] ) {
// Since previous logo was stored a URL, convert it to an attachment ID
$logo = attachment_url_to_postid( $options['featured_logo_header'] );
if ( is_int( $logo ) ) {
set_theme_mod( 'custom_logo', $logo );
}
}
// Delete transients after migration
delete_transient( 'catchevolution_logo' );
// Update to match logo_version so that script is not executed continously
set_theme_mod( 'logo_version', '3.6' );
}
}
add_action( 'after_setup_theme', 'catchevolution_logo_migrate' );
/**
* Migrate Custom CSS to WordPress core Custom CSS
*
* Runs if version number saved in theme_mod "custom_css_version" doesn't match current theme version.
*/
function catchevolution_custom_css_migrate(){
$ver = get_theme_mod( 'custom_css_version', false );
// Return if update has already been run
if ( version_compare( $ver, '4.7' ) >= 0 ) {
return;
}
if ( function_exists( 'wp_update_custom_css_post' ) ) {
// Migrate any existing theme CSS to the core option added in WordPress 4.7.
/**
* Get Theme Options Values
*/
global $catchevolution_options_settings;
$options = $catchevolution_options_settings;
if ( '' != $options['custom_css'] ) {
$core_css = wp_get_custom_css(); // Preserve any CSS already added to the core option.
$return = wp_update_custom_css_post( $core_css . $options['custom_css'] );
if ( ! is_wp_error( $return ) ) {
// Remove the old theme_mod, so that the CSS is stored in only one place moving forward.
unset( $options['custom_css'] );
update_option( 'catchevolution_options', $options );
// Update to match custom_css_version so that script is not executed continously
set_theme_mod( 'custom_css_version', '4.7' );
}
}
}
}
add_action( 'after_setup_theme', 'catchevolution_custom_css_migrate' );
/**
* Customizer Options
*/
require( get_template_directory() . '/inc/panel/customizer/customizer.php' );