110, 'width' => 470, 'flex-width' => true, 'flex-height' => true, ) ) ); /** * Register menu locations. */ register_nav_menus( apply_filters( 'activatelife_register_nav_menus', array( 'primary' => __('Primary Menu', 'activatelife'), 'handheld' => __('Handheld Menu', 'activatelife'), ) ) ); /* * Switch default core markup for search form, comment form, comments, galleries, captions and widgets * to output valid HTML5. */ add_theme_support( 'html5', apply_filters( 'activatelife_html5_args', array( 'search-form', 'comment-form', 'comment-list', 'gallery', 'caption', 'widgets', ) ) ); /** * Setup the WordPress core custom background feature. */ add_theme_support( 'custom-background', apply_filters( 'activatelife_custom_background_args', array( 'default-color' => apply_filters('activatelife_default_background_color', 'ffffff'), 'default-image' => '', ) ) ); /** * Setup the WordPress core custom header feature. */ add_theme_support( 'custom-header', apply_filters( 'activatelife_custom_header_args', array( 'default-image' => '', 'header-text' => false, 'width' => 1950, 'height' => 500, 'flex-width' => true, 'flex-height' => true, ) ) ); /** * 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', apply_filters( 'activatelife_site_logo_args', array( 'size' => 'full', ) ) ); /** * Declare support for title theme feature. */ add_theme_support('title-tag'); /** * Declare support for selective refreshing of widgets. */ add_theme_support('customize-selective-refresh-widgets'); /** * Add support for Block Styles. */ add_theme_support('wp-block-styles'); /** * Add support for full and wide align images. */ add_theme_support('align-wide'); /** * Add support for editor styles. */ add_theme_support('editor-styles'); /** * Add support for editor font sizes. */ add_theme_support('editor-font-sizes', array( array( 'name' => __('Small', 'activatelife'), 'size' => 14, 'slug' => 'small', ), array( 'name' => __('Normal', 'activatelife'), 'size' => 16, 'slug' => 'normal', ), array( 'name' => __('Medium', 'activatelife'), 'size' => 23, 'slug' => 'medium', ), array( 'name' => __('Large', 'activatelife'), 'size' => 26, 'slug' => 'large', ), array( 'name' => __('Huge', 'activatelife'), 'size' => 37, 'slug' => 'huge', ), )); /** * Enqueue editor styles. */ add_editor_style(array('assets/css/base/gutenberg-editor.css', $this->google_fonts())); /** * Add support for responsive embedded content. */ add_theme_support('responsive-embeds'); } /** * Register widget area. * * @link https://codex.wordpress.org/Function_Reference/register_sidebar */ public function widgets_init() { $sidebar_args['sidebar'] = array( 'name' => __('Sidebar', 'activatelife'), 'id' => 'sidebar-1', 'description' => '', ); $rows = intval(apply_filters('activatelife_footer_widget_rows', 1)); $regions = intval(apply_filters('activatelife_footer_widget_columns', 4)); for ($row = 1; $row <= $rows; $row++) { for ($region = 1; $region <= $regions; $region++) { $footer_n = $region + $regions * ($row - 1); // Defines footer sidebar ID. $footer = sprintf('footer_%d', $footer_n); if (1 === $rows) { /* translators: 1: column number */ $footer_region_name = sprintf(__('Footer Column %1$d', 'activatelife'), $region); /* translators: 1: column number */ $footer_region_description = sprintf(__('Widgets added here will appear in column %1$d of the footer.', 'activatelife'), $region); } else { /* translators: 1: row number, 2: column number */ $footer_region_name = sprintf(__('Footer Row %1$d - Column %2$d', 'activatelife'), $row, $region); /* translators: 1: column number, 2: row number */ $footer_region_description = sprintf(__('Widgets added here will appear in column %1$d of footer row %2$d.', 'activatelife'), $region, $row); } $sidebar_args[$footer] = array( 'name' => $footer_region_name, 'id' => sprintf('footer-%d', $footer_n), 'description' => $footer_region_description, ); } } $sidebar_args = apply_filters('activatelife_sidebar_args', $sidebar_args); foreach ($sidebar_args as $sidebar => $args) { $widget_tags = array( 'before_widget' => '
', 'before_title' => '', ); /** * Dynamically generated filter hooks. Allow changing widget wrapper and title tags. See the list below. * * 'activatelife_header_widget_tags' * 'activatelife_sidebar_widget_tags' * * 'activatelife_footer_1_widget_tags' * 'activatelife_footer_2_widget_tags' * 'activatelife_footer_3_widget_tags' * 'activatelife_footer_4_widget_tags' */ $filter_hook = sprintf('activatelife_%s_widget_tags', $sidebar); $widget_tags = apply_filters($filter_hook, $widget_tags); if (is_array($widget_tags)) { register_sidebar($args + $widget_tags); } } } /** * Enqueue scripts and styles. * * @since 1.0.0 */ public function scripts() { global $activatelife_version; /** * Styles */ wp_enqueue_style('activatelife-style', get_template_directory_uri() . '/style.css', '', $activatelife_version); wp_style_add_data('activatelife-style', 'rtl', 'replace'); wp_enqueue_style('activatelife-icons', get_template_directory_uri() . '/assets/css/base/icons.css', '', $activatelife_version); wp_style_add_data('activatelife-icons', 'rtl', 'replace'); /** * Fonts */ wp_enqueue_style('activatelife-fonts', $this->google_fonts(), array(), null); /** * Scripts */ $suffix = (defined('SCRIPT_DEBUG') && SCRIPT_DEBUG) ? '' : '.min'; wp_enqueue_script('activatelife-search', get_template_directory_uri() . '/assets/js/search-toggle' . $suffix . '.js', array('jquery'), $activatelife_version, true); wp_enqueue_script('activatelife-navigation', get_template_directory_uri() . '/assets/js/navigation' . $suffix . '.js', array(), $activatelife_version, true); wp_enqueue_script('activatelife-skip-link-focus-fix', get_template_directory_uri() . '/assets/js/skip-link-focus-fix' . $suffix . '.js', array(), '20130115', true); if (is_page_template('template-homepage.php') && has_post_thumbnail()) { wp_enqueue_script('activatelife-homepage', get_template_directory_uri() . '/assets/js/homepage' . $suffix . '.js', array(), $activatelife_version, true); } if (is_singular() && comments_open() && get_option('thread_comments')) { wp_enqueue_script('comment-reply'); } wp_enqueue_script('jquery-pep', get_template_directory_uri() . '/assets/js/vendor/pep.min.js', array(), '0.4.3', true); } /** * Register Google fonts. * * @return string Google fonts URL for the theme. * @since 2.4.0 */ public function google_fonts() { $google_fonts = apply_filters( 'activatelife_google_font_families', array( 'source-sans-pro' => 'Josefin+Sans:300,400,600', ) ); $query_args = array( 'family' => implode('|', $google_fonts), 'subset' => rawurlencode('latin,latin-ext'), ); $fonts_url = add_query_arg($query_args, 'https://fonts.googleapis.com/css'); return $fonts_url; } /** * Enqueue block assets. * * @since 2.5.0 */ public function block_assets() { global $activatelife_version; // Styles. wp_enqueue_style('activatelife-gutenberg-blocks', get_template_directory_uri() . '/assets/css/base/gutenberg-blocks.css', '', $activatelife_version); wp_style_add_data('activatelife-gutenberg-blocks', 'rtl', 'replace'); } /** * Enqueue supplemental block editor assets. * * @since 2.4.0 */ public function block_editor_assets() { global $activatelife_version; // JS. $suffix = (defined('SCRIPT_DEBUG') && SCRIPT_DEBUG) ? '' : '.min'; wp_enqueue_script('activatelife-editor', get_template_directory_uri() . '/assets/js/editor' . $suffix . '.js', array('wp-data', 'wp-dom-ready', 'wp-edit-post'), $activatelife_version, true); } /** * 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()) { $child_theme = wp_get_theme(get_stylesheet()); wp_enqueue_style('activatelife-child-style', get_stylesheet_uri(), array(), $child_theme->get('Version')); } } /** * Get our wp_nav_menu() fallback, wp_page_menu(), to show a home link. * * @param array $args Configuration arguments. * @return array */ public function page_menu_args($args) { $args['show_home'] = true; return $args; } /** * 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 to blogs with more than 1 published author. if (is_multi_author()) { $classes[] = 'group-blog'; } /** * Adds a class when WooCommerce is not active. * * @todo Refactor child themes to remove dependency on this class. */ $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 activatelife_make_me_cute and see how deep the rabbit hole goes... */ $cute = apply_filters('activatelife_make_me_cute', false); if (true === $cute) { $classes[] = 'activatelife-cute'; } // If our main sidebar doesn't contain widgets, adjust the layout to be full-width. if (!is_active_sidebar('sidebar-1')) { $classes[] = 'activatelife-full-width-content'; } // Add class when using homepage template + featured image. if (is_page_template('template-homepage.php') && has_post_thumbnail()) { $classes[] = 'has-post-thumbnail'; } // Add class if align-wide is supported. if (current_theme_supports('align-wide')) { $classes[] = 'activatelife-align-wide'; } return $classes; } public function set_sidebar($name) { if (is_active_sidebar('sidebar-1')) { $name = 'sidebar-1'; } return $name; } /** * Adds a custom parameter to the editor settings that is used * to track whether the main sidebar has widgets. * * @param array $settings Default editor settings. * @param WP_Post $post Post being edited. * * @return array Filtered block editor settings. * @since 2.4.3 */ public function custom_editor_settings($settings, $post) { $settings['mainSidebarActive'] = false; if (is_active_sidebar('sidebar-1')) { $settings['mainSidebarActive'] = true; } return $settings; } /** * Custom navigation markup template hooked into `navigation_markup_template` filter hook. */ public function navigation_markup_template() { $template = ''; return apply_filters('activatelife_navigation_markup_template', $template); } /** * Add styles for embeds */ public function print_embed_styles() { wp_enqueue_style('source-sans-pro', '//fonts.googleapis.com/css?family=Source+Sans+Pro:400,300,300italic,400italic,700,900'); $accent_color = get_theme_mod('activatelife_accent_color'); $background_color = activatelife_get_content_background_color(); ?>