<?php /** * * Sets up theme defaults and registers support for various WordPress features. */ use ColibriWP\Theme\Core\Hooks; use ColibriWP\Theme\Core\Utils; use ColibriWP\Theme\Defaults; use ColibriWP\Theme\Translations; use Kubio\Core\Activation; use Kubio\Theme\Components\CssOutput; use Kubio\Theme\Components\Footer; use Kubio\Theme\Components\FrontHeader\Buttons; use Kubio\Theme\Components\FrontHeader\Hero as FrontPageHero; use Kubio\Theme\Components\FrontHeader\Image; use Kubio\Theme\Components\FrontHeader\Navigation; use Kubio\Theme\Components\FrontHeader\Subtitle; use Kubio\Theme\Components\FrontHeader\Title; use Kubio\Theme\Components\FrontHeader\TopBar; use Kubio\Theme\Components\FrontHeader\TopBarListIcons; use Kubio\Theme\Components\FrontHeader\TopBarSocialIcons; use Kubio\Theme\Components\Header; use Kubio\Theme\Components\Header\Logo; use Kubio\Theme\Components\HeaderMenu; use Kubio\Theme\Components\InnerHeader\Hero as InnerHero; use Kubio\Theme\Components\InnerHeader\Navigation as InnerNavigation; use Kubio\Theme\Components\InnerHeader\Title as InnerTitle; use Kubio\Theme\Components\InnerHeader\TopBar as InnerTopBar; use Kubio\Theme\Components\MainContent; use Kubio\Theme\Components\MainContent\ArchiveLoop; use Kubio\Theme\Components\MainContent\PostLoop; use Kubio\Theme\Components\PageContent; use Kubio\Theme\Components\PageNotFound; use Kubio\Theme\Components\SingleContent; use Kubio\Theme\Flags; use Kubio\Theme\Theme; require_once get_template_directory() . '/vendor/autoload.php'; require_once __DIR__ . '/inc/safari-polyfills.php'; function momota_register_components( $components ) { $namespace = 'ColibriWP\\Theme\\Components'; $components = array_merge( $components, array( // header components 'header' => Header::class, 'logo' => Logo::class, 'header-menu' => HeaderMenu::class, // inner page fragments 'inner-nav-bar' => InnerNavigation::class, 'inner-hero' => InnerHero::class, 'inner-title' => InnerTitle::class, 'inner-top-bar' => InnerTopBar::class, // front page fragments 'front-hero' => FrontPageHero::class, 'front-title' => Title::class, 'front-subtitle' => Subtitle::class, 'buttons' => Buttons::class, 'front-nav-bar' => Navigation::class, 'top-bar-list-icons' => TopBarListIcons::class, 'top-bar-social-icons' => TopBarSocialIcons::class, 'front-top-bar' => TopBar::class, 'front-image' => Image::class, // footer components 'front-footer' => Footer::class, // general components 'css' => CssOutput::class, // page content 'main' => MainContent::class, // blog loop 'single' => SingleContent::class, // single page 'content' => PageContent::class, // inner page content 'front-page-content' => "{$namespace}\\FrontPageContent", // front page content 'search' => "{$namespace}\\PageSearch", // search page 'page-not-found' => PageNotFound::class, // 404 page // inner content fragments // main content 'main-loop' => ArchiveLoop::class, // no usage found 'post-loop' => PostLoop::class, // single page content 'archive-loop' => ArchiveLoop::class, // blog page content ) ); return $components; } Hooks::prefixed_add_filter( 'components', 'momota_register_components', 20 ); Theme::load( array( 'themeBaseRelativePath' => '', 'themeRelativePath' => '', ) ); /** * @return Theme */ function momota_theme() { return Theme::getInstance(); } function momota_assets() { return momota_theme()->getAssetsManager(); } momota_theme() ->add_theme_support( 'automatic-feed-links' ) ->add_theme_support( 'title-tag' ) ->add_theme_support( 'post-thumbnails' ) ->add_theme_support( 'custom-logo', array( 'flex-height' => true, 'flex-width' => true, 'width' => 150, 'height' => 70, ) ) ->register_menus( array( 'header-menu' => esc_html__( 'Header Menu', 'momota' ), 'footer-menu' => esc_html__( 'Footer Menu', 'momota' ), ) ); if ( ! apply_filters( 'kubio_is_enabled', false ) ) { momota_assets() ->registerTemplateScript( 'momota-theme', '/theme/theme.js', array( 'jquery', 'jquery-effects-slide', 'jquery-effects-core' ) ) ->registerStylesheet( 'momota-theme', '/theme/theme.css' ); momota_assets()->loadLocalGoogleFonts(); // foreach ( Defaults::get( 'fonts', array() ) as $family => $variants ) { // momota_assets()->addGoogleFont( $family, $variants ); // } add_action( 'wp_enqueue_scripts', 'momota_print_color_scheme', 0 ); } else { momota_assets() ->registerStyle( 'momota-theme', momota_assets()->getBaseURL() . '/theme/fse-base-style.css' ); Hooks::prefixed_add_filter( 'skip_google_fonts', '__return_true' ); } function momota_theme_add_woocommerce_support() { add_theme_support( 'woocommerce', array( 'product_grid' => array( 'default_rows' => 3, 'min_rows' => 2, 'max_rows' => 8, 'default_columns' => 3, 'min_columns' => 2, 'max_columns' => 4, ), ) ); add_theme_support( 'kubio-woocommerce' ); } add_action( 'after_setup_theme', 'momota_theme_add_woocommerce_support' ); add_filter( 'kubio/activation/after_activation_redirect_url', 'momota_after_activation_redirect_url' ); function momota_after_activation_redirect_url( $url ) { if ( Flags::get( 'start_source', false ) == 'notice-homepage' ) { $url = add_query_arg( array( 'page' => 'kubio-get-started', 'kubio-designed-imported' => intval( ! ! Flags::get( 'import_design', false ) ), ), admin_url( 'admin.php' ) ); } return $url; } Hooks::add_wp_ajax( 'front_set_predesign', function () { check_ajax_referer( 'kubio_front_set_predesign_nonce', 'nonce' ); $with_ai = Utils::pathGet( $_REQUEST, 'AI', 'no' ); $source = sanitize_text_field( Utils::pathGet( $_REQUEST, 'source', 'notice' ) ); $index = intval( Utils::pathGet( $_REQUEST, 'index', 0 ) ); if ( $with_ai === 'yes' ) { Flags::set( 'start_with_ai', true ); } else { Flags::set( 'import_design', true ); Flags::set( 'import_design_index', $index ); } // customizer source $start_source = $source; if ( $source === 'notice' ) { $start_source = $with_ai === 'yes' ? "{$source}-ai" : "{$source}-homepage"; } Flags::set( 'start_source', $start_source ); wp_send_json_success(); } ); function momota_get_builder_plugin_slug() { if ( ! function_exists( 'get_plugins' ) ) { require_once ABSPATH . 'wp-admin/includes/plugin.php'; } $plugins = get_plugins(); if ( isset( $plugins['kubio-pro/plugin.php'] ) ) { return 'kubio-pro'; } return 'kubio'; } function momota_theme_plugins( $plugins ) { $plugin_slug = momota_get_builder_plugin_slug(); $plugins[ $plugin_slug ] = array( 'name' => $plugin_slug === 'kubio-pro' ? __( 'Kubio PRO', 'momota' ) : __( 'Kubio', 'momota' ), 'description' => \ColibriWP\Theme\Translations::translate( 'page_builder_plugin_description' ), 'plugin_path' => $plugin_slug . '/plugin.php', ); return $plugins; } Hooks::prefixed_add_filter( 'theme_plugins', 'momota_theme_plugins' ); add_filter( 'kubio/remote_data_url', function( $url ) { if ( strpos( $url, 'with-front' ) !== false && Flags::get( 'import_design_index', 0 ) !== 0 ) { $front_slug = 'with-front-' . Flags::get( 'import_design_index' ); $base_url = 'https://themes.kubiobuilder.com'; $file_name = get_stylesheet() . '__' . get_template() . '__' . $front_slug . '.data'; return "{$base_url}/{$file_name}"; } return $url; } ); add_action( 'kubio/after_activation', function () { $activation_instance = Activation::load(); if ( ! $activation_instance->isCLI() ) { $start_source = Flags::get( 'start_source', 'other' ); if ( $start_source == 'starter-sites' ) { $url = add_query_arg( array( 'page' => 'kubio-get-started', 'tab' => 'demo-sites', ), admin_url( 'admin.php' ) ); wp_redirect( $url ); exit(); } } } ); Hooks::prefixed_add_action( 'after_plugin_activated', function ( $slug ) { if ( $slug === momota_get_builder_plugin_slug() ) { $hash = uniqid( 'activate-' ); Flags::set( 'activation-hash', $hash ); $start_source = Flags::get( 'start_source', 'other' ); if ( strpos( $start_source, 'customizer-sidebar' ) === 0 ) { $url = add_query_arg( array( 'page' => 'kubio', 'kubio-activation-hash' => $hash, ), admin_url( 'admin.php' ) ); } else { if ( $start_source == 'starter-sites' ) { $url = add_query_arg( array( 'page' => 'kubio-get-started', 'tab' => 'demo-sites', 'kubio-activation-hash' => $hash, ), admin_url( 'admin.php' ) ); } else { $url = add_query_arg( array( 'page' => 'kubio-get-started', 'kubio-activation-hash' => $hash, 'kubio-designed-imported' => intval( ! ! Flags::get( 'import_design', false ) ), ), admin_url( 'admin.php' ) ); } } wp_send_json_success( array( 'redirect' => $url, ) ); } } ); add_action( 'kubio/admin-page/before-get-started', function () { if ( isset( $_GET['kubio-designed-imported'] ) && intval( $_GET['kubio-designed-imported'] ) ) : ?> <div class="kubio-admin-page-page-section kubio-get-started-section-1 wrap"> <div class="kubio-admin-row get-started-imported notice notice-success"> <div> <p class="imported-title"> <?php echo esc_html( sprintf( __( '%s design has been successfully imported!', 'momota' ), momota_theme()->getName() ) ); ?> </p> <p class="imported-subtitle"> <?php echo esc_html( sprintf( __( '%s design has been successfully imported! You can take a look at your new design or start editing it', 'momota' ), momota_theme()->getName() ) ); ?> </p> </div> <div class="button imported-view-site-button"> <a href="<?php echo esc_url( site_url() ); ?>"> <?php echo esc_html( __( 'View site', 'momota' ) ); ?> </a> </div> </div> </div> <?php endif; } ); add_filter( 'kubio/has_block_templates_support', '__return_true' ); add_filter( 'kubio/enable_try_online', '__return_true' ); add_filter( 'kubio/show-supplementary-upgrade-to-pro', '__return_true' ); add_filter( 'kubio/enable_ai_capabilities', '__return_true' ); function momota_try_online_url() { return 'https://kubiobuilder.com/go/try-theme/' . get_template(); } add_filter( 'kubio/editor-try-online/url', 'momota_try_online_url', 10 ); function momota_render_header_style() { ?> <base target="_top"> <?php momota_theme()->get( 'css' )->render(); } add_action( 'wp_head', 'momota_render_header_style', 100 ); add_filter( 'body_class', function ( $classes ) { if ( ! apply_filters( 'kubio_is_enabled', false ) ) { $classes[] = 'kubio-theme'; } return $classes; } ); add_filter( 'admin_body_class', function ( $classes ) { if ( ! apply_filters( 'kubio_is_enabled', false ) ) { return "$classes kubio-theme"; } return $classes; } ); function kubio_onboarding_init() { // Onboarding notice remains disabled after switching multiple kubio themes. update_option( 'kubio-onboarding-notice-disabled', false ); } add_action( 'after_switch_theme', 'kubio_onboarding_init' ); add_filter('tgmpa_admin_menu__disabled', "__return_true");