define_constants(); $this->load_helpers(); add_action( 'after_setup_theme', array( $this, 'set_theme_support' ) ); add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_js' ) ); add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_css' ) ); add_action( 'wp_enqueue_scripts', array( $this, 'add_inline_style' ) ); add_action( 'multifox_before_main_css', array( $this, 'add_google_fonts' ) ); add_action( 'after_setup_theme', array( $this, 'include_module_helpers' ) ); } function define_constants() { define( 'MULTIFOX_ROOT_DIR', get_template_directory() ); define( 'MULTIFOX_ROOT_URI', get_template_directory_uri() ); define( 'MULTIFOX_MODULE_DIR', MULTIFOX_ROOT_DIR.'/modules' ); define( 'MULTIFOX_MODULE_URI', MULTIFOX_ROOT_URI.'/modules' ); define( 'MULTIFOX_LANG_DIR', MULTIFOX_ROOT_DIR.'/languages' ); $theme = wp_get_theme(); define( 'MULTIFOX_THEME_NAME', $theme->get('Name')); define( 'MULTIFOX_THEME_VERSION', $theme->get('Version')); } function load_helpers() { include_once MULTIFOX_ROOT_DIR . '/helpers/helper.php'; } function set_theme_support() { load_theme_textdomain( 'multifox', MULTIFOX_LANG_DIR ); add_theme_support( 'automatic-feed-links' ); add_theme_support( 'title-tag' ); add_theme_support( 'html5', array( 'search-form', 'comment-form', 'comment-list', 'gallery', 'caption' ) ); add_theme_support( 'post-formats', array('status', 'quote', 'gallery', 'image', 'video', 'audio', 'link', 'aside', 'chat')); add_theme_support( 'post-thumbnails' ); add_theme_support( 'custom-logo' ); add_theme_support( 'custom-background', array( 'default-color' => '#d1e4dd' ) ); add_theme_support( 'custom-header' ); add_theme_support( 'align-wide' ); // Gutenberg wide images. add_theme_support( 'editor-color-palette', array( array( 'name' => esc_html__( 'Primary Color', 'multifox' ), 'slug' => 'primary', 'color' => '#047469', ), array( 'name' => esc_html__( 'Secondary Color', 'multifox' ), 'slug' => 'secondary', 'color' => '#fbbf65', ), array( 'name' => esc_html__( 'Tertiary Color', 'multifox' ), 'slug' => 'tertiary', 'color' => '#fff2e0', ), array( 'name' => esc_html__( 'Body Background Color', 'multifox' ), 'slug' => 'body-bg', 'color' => '#ffffff', ), array( 'name' => esc_html__( 'Body Text Color', 'multifox' ), 'slug' => 'body-text', 'color' => '#555555', ), array( 'name' => esc_html__( 'Alternate Color', 'multifox' ), 'slug' => 'alternate', 'color' => '#141414', ), array( 'name' => esc_html__( 'Transparent Color', 'multifox' ), 'slug' => 'transparent', 'color' => 'rgba(0,0,0,0)', ) ) ); add_theme_support( 'editor-styles' ); add_editor_style( './assets/css/style-editor.css' ); $GLOBALS['content_width'] = apply_filters( 'multifox_set_content_width', 1230 ); register_nav_menus( array( 'main-menu' => esc_html__('Main Menu', 'multifox'), ) ); } function enqueue_js() { wp_enqueue_script('jquery-select2', get_theme_file_uri('/assets/lib/select2/select2.full.js'), array('jquery'), false, true); /** * Before Hook */ do_action( 'multifox_before_enqueue_js' ); wp_enqueue_script('multifox-jqcustom', get_theme_file_uri('/assets/js/custom.js'), array('jquery'), false, true); if ( is_singular() && comments_open() && get_option( 'thread_comments' ) ) { wp_enqueue_script( 'comment-reply' ); } /** * After Hook */ do_action( 'multifox_after_enqueue_js' ); } function enqueue_css() { /** * Before Hook */ do_action( 'multifox_before_main_css' ); wp_enqueue_style( 'multifox', get_stylesheet_uri(), false, MULTIFOX_THEME_VERSION, 'all' ); wp_enqueue_style( 'multifox-icons', get_theme_file_uri('/assets/css/icons.css'), false, MULTIFOX_THEME_VERSION, 'all'); $css = ''; $css .= apply_filters( 'multifox_extra_primary_color_css_var', '--MULTIFOXPrimaryColor: #047469;' ); $css .= apply_filters( 'multifox_extra_secondary_color_css_var', '--MULTIFOXSecondaryColor: #fbbf65;' ); $css .= apply_filters( 'multifox_extra_tertiary_color_css_var', '--MULTIFOXTertiaryColor: #fff2e0;' ); $css .= apply_filters( 'multifox_extra_body_bg_color_css_var', '--MULTIFOXBodyBGColor: #ffffff;' ); $css .= apply_filters( 'multifox_extra_body_text_color_css_var', '--MULTIFOXBodyTxtColor: #555555;' ); $css .= apply_filters( 'multifox_extra_headalt_color_css_var', '--MULTIFOXHeadAltColor: #141414;' ); $css .= apply_filters( 'multifox_extra_link_color_css_var', '--MULTIFOXLinkColor: #141414;' ); $css .= apply_filters( 'multifox_extra_link_hover_color_css_var', '--MULTIFOXLinkHoverColor: #047469;' ); if( !empty( $css ) ) { wp_add_inline_style( 'multifox', ':root {'.$css.'}' ); } wp_enqueue_style( 'multifox-base', get_theme_file_uri('/assets/css/base.css'), false, MULTIFOX_THEME_VERSION, 'all'); wp_enqueue_style( 'multifox-grid', get_theme_file_uri('/assets/css/grid.css'), false, MULTIFOX_THEME_VERSION, 'all'); wp_enqueue_style( 'multifox-layout', get_theme_file_uri('/assets/css/layout.css'), false, MULTIFOX_THEME_VERSION, 'all'); wp_enqueue_style( 'multifox-widget', get_theme_file_uri('/assets/css/widget.css'), false, MULTIFOX_THEME_VERSION, 'all'); /** * After Hook */ do_action( 'multifox_after_main_css' ); wp_enqueue_style( 'jquery-select2', get_theme_file_uri('/assets/lib/select2/select2.css'), false, MULTIFOX_THEME_VERSION, 'all'); wp_enqueue_style( 'multifox-theme', get_theme_file_uri('/assets/css/theme.css'), false, MULTIFOX_THEME_VERSION, 'all'); } function add_inline_style() { wp_register_style( 'multifox-admin', '', array(), MULTIFOX_THEME_VERSION, 'all' ); wp_enqueue_style( 'multifox-admin' ); $css = apply_filters( 'multifox_extra_add_inline_style', $css = '' ); if( !empty( $css ) ) { wp_add_inline_style( 'multifox-admin', $css ); } /** * Responsive CSS */ # Tablet Landscape $tablet_landscape = apply_filters( 'multifox_extra_add_tablet_landscape_inline_style', $tablet_landscape = '' ); if( !empty( $tablet_landscape ) ) { $tablet_landscape = '@media only screen and (min-width:1025px) and (max-width:1280px) {'."\n".$tablet_landscape."\n".'}'; wp_add_inline_style( 'multifox-admin', $tablet_landscape ); } # Tablet Portrait $tablet_portrait = apply_filters( 'multifox_extra_add_tablet_portrait_inline_style', $tablet_portrait = '' ); if( !empty( $tablet_portrait ) ) { $tablet_portrait = '@media only screen and (min-width:768px) and (max-width:1024px) {'."\n".$tablet_portrait."\n".'}'; wp_add_inline_style( 'multifox-admin', $tablet_portrait ); } # Mobile $mobile_res = apply_filters( 'multifox_extra_add_mobile_res_inline_style', $mobile_res = '' ); if( !empty( $mobile_res ) ) { $mobile_res = '@media (max-width: 767px) {'."\n".$mobile_res."\n".'}'; wp_add_inline_style( 'multifox-admin', $mobile_res ); } } function add_google_fonts() { $subset = apply_filters( 'multifox_google_font_supsets', 'latin-ext' ); $fonts = apply_filters( 'multifox_google_fonts_list', array( 'Open Sans:300,400,500,600,700,800,900', 'Montserrat:300,400,500,600,700,800,900', 'Merriweather:400' ) ); foreach( $fonts as $font ) { $url = '//fonts.googleapis.com/css?family=' . str_replace( ' ', '+', $font ); $url .= !empty( $subset ) ? '&subset=' . $subset : ''; $key = md5( $font . $subset ); // check that the URL is valid. we're going to use transients to make this faster. $url_is_valid = get_transient( $key ); // transient does not exist if ( false === $url_is_valid ) { $response = wp_remote_get( 'https:' . $url ); if ( ! is_array( $response ) ) { // the url was not properly formatted, // cache for 12 hours and continue to the next field set_transient( $key, null, 12 * HOUR_IN_SECONDS ); continue; } // check the response headers. if ( isset( $response['response'] ) && isset( $response['response']['code'] ) ) { if ( 200 == $response['response']['code'] ) { // URL was ok // set transient to true and cache for a week set_transient( $key, true, 7 * 24 * HOUR_IN_SECONDS ); $url_is_valid = true; } } } // If the font-link is valid, enqueue it. if ( $url_is_valid ) { wp_enqueue_style( $key, $url, null, null ); } } } function include_module_helpers() { /** * Before Hook */ do_action( 'multifox_before_load_module_helpers' ); foreach( glob( MULTIFOX_ROOT_DIR. '/modules/*/helper.php' ) as $helper ) { include_once $helper; } /** * After Hook */ do_action( 'multifox_after_load_module_helpers' ); } } Multifox_Loader::instance(); }