hooks(); $this->run_adds(); } public function hooks() { $this->add_action( 'widgets_init', $this, 'register_widgets_action' ); $this->add_action( 'init', $this, 'Blockfold_register_blocks_styles' ); $this->add_filter( 'body_class', $this, 'body_class_modyficator', 2, 2 ); $this->add_filter( 'image_size_names_choose', $this, 'add_custom_image_sizes', 2, 2 ); $this->add_filter( 'kadence_archive_hero_classes', $this, 'blockfold_kadence_add_archive_archive_header_class', 2, 2 ); $this->add_filter( 'kadence_archive_container_classes', $this, 'blockfold_kadence_add_archive_container_class', 2, 2 ); $this->add_filter( 'kadence_theme_options_defaults', $this, 'blockfold_kadence_default_settings', 100, 1 ); $this->add_filter( 'kadence_comment_fields', $this, 'blockfold_default_fields_markup', 100, 1 ); $this->add_filter( 'kadence_comment_args', $this, 'blockfold_default_markup', 100, 1 ); $this->add_filter( 'kadence_global_palette_defaults', $this, 'blockfold_kadence_palete', 2, 2 ); } public function theme_setup() { load_theme_textdomain( 'blockfold', BLOCKFOLD_THEME_DIR . '/languages' ); // Gutenberg wide images add_theme_support( 'align-wide' ); // Add default posts and comments RSS add_theme_support( 'automatic-feed-links' ); // Document title. add_theme_support( 'title-tag' ); //Adding Custom Logo support // Add support for Block Styles. add_theme_support( 'wp-block-styles' ); // TO DO: Add support for block templates // add_theme_support( 'block-templates' ); add_theme_support( 'custom-logo', $this->config->get_logo_attributes() ); // Support for Post Thumbnails add_theme_support( 'post-thumbnails' ); // Add theme support for selective refresh for widgets. add_theme_support( 'customize-selective-refresh-widgets' ); // register all thumbnails sizes $this->add_image_sizes(); // register all blocks patterns $this->register_blocks_patterns(); $GLOBALS['content_width'] = apply_filters( 'Blockfold_content_width', 1200 ); // Register all nav menu locations register_nav_menus( $this->config->get_menus_locations() ); // Add support for responsive embedded content. add_theme_support( 'responsive-embeds' ); // Add support for custom line height controls. add_theme_support( 'custom-line-height' ); // Add support for experimental link color control. add_theme_support( 'experimental-link-color' ); // Add support for experimental cover block spacing. add_theme_support( 'custom-spacing' ); // Custom background color add_theme_support( 'custom-background', array( 'default-color' => 'FFFFFF' ) ); /** * Add post-formats support. */ add_theme_support( 'post-formats', array( 'link', 'aside', 'gallery', 'image', 'quote', 'status', 'video', 'audio', 'chat', ) ); /* * Switch default core markup for search form, comment form, and comments * to output valid HTML5. */ add_theme_support( 'html5', array( 'comment-form', 'comment-list', 'gallery', 'caption', 'style', 'script', 'navigation-widgets', ) ); // Add custom editor font sizes. add_theme_support( 'editor-font-sizes', array( array( 'name' => esc_html__( 'Extra small', 'blockfold' ), 'shortName' => esc_html_x( 'XS', 'Font size', 'blockfold' ), 'size' => 12, 'slug' => 'extra-small', ), array( 'name' => esc_html__( 'Small', 'blockfold' ), 'shortName' => esc_html_x( 'S', 'Font size', 'blockfold' ), 'size' => 14, 'slug' => 'small', ), array( 'name' => esc_html__( 'Normal', 'blockfold' ), 'shortName' => esc_html_x( 'M', 'Font size', 'blockfold' ), 'size' => 18, 'slug' => 'normal', ), array( 'name' => esc_html__( 'Large', 'blockfold' ), 'shortName' => esc_html_x( 'L', 'Font size', 'blockfold' ), 'size' => 22, 'slug' => 'large', ), array( 'name' => esc_html__( 'Extra large', 'blockfold' ), 'shortName' => esc_html_x( 'XL', 'Font size', 'blockfold' ), 'size' => 40, 'slug' => 'extra-large', ), array( 'name' => esc_html__( 'Huge', 'blockfold' ), 'shortName' => esc_html_x( 'XXL', 'Font size', 'blockfold' ), 'size' => 60, 'slug' => 'huge', ), array( 'name' => esc_html__( 'Gigantic', 'blockfold' ), 'shortName' => esc_html_x( 'XXXL', 'Font size', 'blockfold' ), 'size' => 96, 'slug' => 'gigantic', ), ) ); // Editor color palette. $black = get_theme_mod( 'global--color-black', $this->config->get_project_variables( 'global--color-black' ) ); $text = get_theme_mod( 'global--color-text-base', $this->config->get_project_variables( 'global--color-text-base' ) ); $text_lighten = get_theme_mod( 'global--color-text-lighten', $this->config->get_project_variables( 'global--color-text-lighten' ) ); $warning = get_theme_mod( 'global--color-warning', $this->config->get_project_variables( 'global--color-warning' ) ); $primary_base = get_theme_mod( 'global--color-primary-base', $this->config->get_project_variables( 'global--color-primary-base' ) ); $secondary_base = get_theme_mod( 'global--color-secondary', $this->config->get_project_variables( 'global--color-secondary' ) ); $third_base = get_theme_mod( 'global--color-third-base', $this->config->get_project_variables( 'global--color-third-base' ) ); $third_lighten = get_theme_mod( 'global--color-third-lighten', $this->config->get_project_variables( 'global--color-third-lighten' ) ); $primary_lighten = get_theme_mod( 'global--color-primary-lighten', $this->config->get_project_variables( 'global--color-primary-lighten' ) ); $secondary_lighten = get_theme_mod( 'global--color-secondary-lighten', $this->config->get_project_variables( 'global--color-secondary-lighten' ) ); $surface = get_theme_mod( 'global--color-surface', $this->config->get_project_variables( 'global--color-surface' ) ); $invert = get_theme_mod( 'global--color-invert', $this->config->get_project_variables( 'global--color-invert' ) ); $success = get_theme_mod( 'global--color-success', $this->config->get_project_variables( 'global--color-success' ) ); $gray_base = get_theme_mod( 'global--color-gray-base', $this->config->get_project_variables( 'global--color-gray-base' ) ); $gray_lighten = get_theme_mod( 'global--color-gray-lighten', $this->config->get_project_variables( 'global--color-gray-lighten' ) ); $gray_darken = get_theme_mod( 'global--color-gray-darken', $this->config->get_project_variables( 'global--color-gray-darken' ) ); add_theme_support( 'editor-color-palette', array( array( 'name' => esc_html__( 'Black', 'blockfold' ), 'slug' => 'black', 'color' => $black, ), array( 'name' => esc_html__( 'Text', 'blockfold' ), 'slug' => 'text', 'color' => $text, ), array( 'name' => esc_html__( 'Text Lighten', 'blockfold' ), 'slug' => 'text-lighten', 'color' => $text_lighten, ), array( 'name' => esc_html__( 'Primary Base', 'blockfold' ), 'slug' => 'primary-base', 'color' => $primary_base, ), array( 'name' => esc_html__( 'Primary Lighten', 'blockfold' ), 'slug' => 'primary-lighten', 'color' => $primary_lighten, ), array( 'name' => esc_html__( 'Secondary Base', 'blockfold' ), 'slug' => 'secondary-base', 'color' => $secondary_base, ), array( 'name' => esc_html__( 'Secondary Lighten', 'blockfold' ), 'slug' => 'secondary-lighten', 'color' => $secondary_lighten, ), array( 'name' => esc_html__( 'Third Base', 'blockfold' ), 'slug' => 'third-base', 'color' => $third_base, ), array( 'name' => esc_html__( 'Third Lighten', 'blockfold' ), 'slug' => 'third-lighten', 'color' => $third_lighten, ), array( 'name' => esc_html__( 'Surface', 'blockfold' ), 'slug' => 'surface', 'color' => $surface, ), array( 'name' => esc_html__( 'Invert', 'blockfold' ), 'slug' => 'invert', 'color' => $invert, ), array( 'name' => esc_html__( 'Warning', 'blockfold' ), 'slug' => 'warning', 'color' => $warning, ), array( 'name' => esc_html__( 'Success', 'blockfold' ), 'slug' => 'success', 'color' => $success, ), array( 'name' => esc_html__( 'Gray Base', 'blockfold' ), 'slug' => 'gray-base', 'color' => $gray_base, ), array( 'name' => esc_html__( 'Gray Lighten', 'blockfold' ), 'slug' => 'gray-lighten', 'color' => $gray_lighten, ), array( 'name' => esc_html__( 'Gray Darken', 'blockfold' ), 'slug' => 'gray-darken', 'color' => $gray_darken, ), ) ); add_theme_support( 'editor-gradient-presets', array( array( 'name' => esc_html__( 'Black to Invert', 'blockfold' ), 'gradient' => 'linear-gradient(160deg, ' . $black . ' 0%, ' . $invert . ' 100%)', 'slug' => 'black-to-invert', ), array( 'name' => esc_html__( 'Invert to black', 'blockfold' ), 'gradient' => 'linear-gradient(160deg, ' . $invert . ' 0%, ' . $black . ' 100%)', 'slug' => 'invert-to-black', ), array( 'name' => esc_html__( 'Primary to secondary', 'blockfold' ), 'gradient' => 'linear-gradient(160deg, ' . $primary_base . ' 0%, ' . $secondary_base . ' 100%)', 'slug' => 'primary-base-to-secondary-base', ), array( 'name' => esc_html__( 'Secondary to primary', 'blockfold' ), 'gradient' => 'linear-gradient(160deg, ' . $secondary_base . ' 0%, ' . $primary_base . ' 100%)', 'slug' => 'secondary-base-to-primary-base', ), array( 'name' => esc_html__( 'Secondary to third', 'blockfold' ), 'gradient' => 'linear-gradient(160deg, ' . $secondary_base . ' 0%, ' . $third_base . ' 100%)', 'slug' => 'secondary-base-to-third-base', ), array( 'name' => esc_html__( 'Third to Secondary', 'blockfold' ), 'gradient' => 'linear-gradient(160deg, ' . $third_base . ' 0%, ' . $secondary_base . ' 100%)', 'slug' => 'third-base-to-secondary-base', ), array( 'name' => esc_html__( 'Invert to surface', 'blockfold' ), 'gradient' => 'linear-gradient(160deg, ' . $invert . ' 0%, ' . $surface . ' 100%)', 'slug' => 'invert-to-surface', ), array( 'name' => esc_html__( 'SUrface to Invert', 'blockfold' ), 'gradient' => 'linear-gradient(160deg, ' . $surface . ' 0%, ' . $invert . ' 100%)', 'slug' => 'surface-to-invert', ), ) ); } /** * Ads images sizes based on default settings */ public function add_image_sizes() { $sizes = $this->config->get_image_sizes(); foreach ( $sizes as $size => $attributes ) { add_image_size( $size, $attributes[0], $attributes[1], $attributes[2] ); } } /** * Add Images Sizes to display in the editor * * @param $sizes * * @return array */ public function add_custom_image_sizes( $sizes ) { return array_merge( $sizes, $this->config->get_image_sizes_to_display() ); } /** * Register sidebars from the config */ public function register_widgets_action() { $this->sidebars = $this->config->get_sidebars(); if ( is_array( $this->sidebars ) ) { foreach ( $this->sidebars as $sidebar ) { register_sidebar( $sidebar ); } } } public function body_class_modyficator( $classes, $type = 'default' ) { global $post; $meta_option = ''; /*check local page settings*/ if ( isset( $post->ID ) ) { $page_template = get_post_meta( $post->ID, '_wp_page_template', TRUE ); if ( $page_template == 'templates/portfolio-list.php' ) { $classes[] = 'page-portfolio-isotope'; } } return $classes; } /** * Register all blocks from the configuration */ public function register_blocks_patterns() { $categories = apply_filters( 'Blockfold_block_categories', $this->config->get_block_patterns_categories() ); $blocks_patterns = apply_filters( 'Blockfold_block_patterns', $this->config->get_block_patterns( $categories ) ); if ( function_exists( 'register_block_pattern_category' ) ) { foreach ( $categories as $name => $data ) { register_block_pattern_category( $name, $data ); } } if ( function_exists( 'register_block_pattern' ) ) { foreach ( $blocks_patterns as $pattern_array ) { foreach ( $pattern_array as $name => $data ) { register_block_pattern( $name, $data ); } } } } /** * Register block styles from config file */ public function Blockfold_register_blocks_styles() { $styles = apply_filters( 'Blockfold_block_styles', $this->config->get_block_styles() ); if ( function_exists( 'register_block_style' ) ) { foreach ( $styles as $block => $attributes ) { foreach ( $attributes as $single_attributes ) { register_block_style( $block, $single_attributes ); } } } } /** * Archive title decorator * * @param $classes * * @return mixed */ public function blockfold_kadence_add_archive_archive_header_class( $classes ) { $is_card_stack = (bool) get_theme_mod( 'archive_title_decorator' ); if ( $is_card_stack === TRUE ) { $classes[] = 'is-style-archive-title-decorator'; } return $classes; } /** * Predefined Kadence Theme settings * @return array */ public function blockfold_kadence_default_settings($default_options) { $settings = array_merge($default_options, $this->config->get_kadence_settings()); return $settings; } /** * Archive card decorator * * @param $classes * * @return mixed */ public function blockfold_kadence_add_archive_container_class( $classes ) { $is_card_stack = (bool) get_theme_mod( 'archive_card_version' ); if ( $is_card_stack === TRUE ) { $classes[] = 'is-style-card-stack'; } return $classes; } /** * Predefined Kadence Theme palette * @return string */ public function blockfold_kadence_palete() { return $this->config->get_kadence_palette(); } /** * Adds a div wrapper around the author, email and url fields. * * @param array $fields the contact form fields. * @return array Filtered markup. */ public function blockfold_default_fields_markup( $fields ) { $commenter = wp_get_current_commenter(); $req = get_option( 'require_name_email' ); $aria_req = ( $req ? " aria-required='true' required='required'" : '' ); $label_req = ( $req ? ' *' : '' ); $show_web = kadence()->option( 'comment_form_remove_web' ); $fields['author'] = '

'; $fields['email'] = '

'; if ( $show_web ) { $fields['url'] = '
'; } else { $fields['url'] = '

'; } return $fields; } /** * Adds a div wrapper around the author, email and url fields. * * @param array $args the contact form args. * @return array Filtered markup. */ public function blockfold_default_markup( $args ) { $commenter = wp_get_current_commenter(); $args['comment_field'] = '

'; return $args ; } } }