preview->is_preview_mode() ) { $classes[] = 'el-is-editing'; } return $classes; } public function elementor_after_save( $object, $data ) { if ( apply_filters( 'kadence_add_global_colors_to_elementor', true ) ) { // Prevent Errors. if ( ! current_user_can( 'edit_theme_options' ) ) { return; } if ( $data && isset( $data['settings'] ) && is_array( $data['settings'] ) && isset( $data['settings']['kadence_colors'] ) && is_array( $data['settings']['kadence_colors'] ) ) { $update_palette = false; $palette = json_decode( kadence()->get_palette(), true ); if ( isset( $palette['active'] ) && ! empty( $palette['active'] ) ) { $active = $palette['active']; } else { $palette = json_decode( kadence()->get_default_palette(), true ); $active = $palette['active']; } foreach ( $data['settings']['kadence_colors'] as $key => $value ) { if ( 'palette1' == $value['_id'] && ! empty( $value['color'] ) ) { $palette[$active][0]['color'] = $value['color']; $update_palette = true; } if ( 'palette2' == $value['_id'] && ! empty( $value['color'] ) ) { $palette[$active][1]['color'] = $value['color']; $update_palette = true; } if ( 'palette3' == $value['_id'] && ! empty( $value['color'] ) ) { $palette[$active][2]['color'] = $value['color']; $update_palette = true; } if ( 'palette4' == $value['_id'] && ! empty( $value['color'] ) ) { $palette[$active][3]['color'] = $value['color']; $update_palette = true; } if ( 'palette5' == $value['_id'] && ! empty( $value['color'] ) ) { $palette[$active][4]['color'] = $value['color']; $update_palette = true; } if ( 'palette6' == $value['_id'] && ! empty( $value['color'] ) ) { $palette[$active][5]['color'] = $value['color']; $update_palette = true; } if ( 'palette7' == $value['_id'] && ! empty( $value['color'] ) ) { $palette[$active][6]['color'] = $value['color']; $update_palette = true; } if ( 'palette8' == $value['_id'] && ! empty( $value['color'] ) ) { $palette[$active][7]['color'] = $value['color']; $update_palette = true; } if ( 'palette9' == $value['_id'] && ! empty( $value['color'] ) ) { $palette[$active][8]['color'] = $value['color']; $update_palette = true; } } $current = \Elementor\Plugin::$instance->kits_manager->get_current_settings(); if ( $current && isset( $current['custom_colors'] ) && $update_palette ) { $custom_colors = $current['custom_colors']; $kadence_add = true; $kadence = array( 'kadence1', 'kadence2', 'kadence3', 'kadence4', 'kadence5', 'kadence6', 'kadence7', 'kadence8', 'kadence9' ); foreach ( $custom_colors as $key => $value ) { if ( is_array( $value ) && isset( $value['_id'] ) && in_array( $value['_id'], $kadence ) ) { $kadence_add = false; if ( $value['_id'] == 'kadence1' ) { $custom_colors[ $key ]['color'] = $palette[$active][0]['color']; } if ( $value['_id'] == 'kadence2' ) { $custom_colors[ $key ]['color'] = $palette[$active][1]['color']; } if ( $value['_id'] == 'kadence3' ) { $custom_colors[ $key ]['color'] = $palette[$active][2]['color']; } if ( $value['_id'] == 'kadence4' ) { $custom_colors[ $key ]['color'] = $palette[$active][3]['color']; } if ( $value['_id'] == 'kadence5' ) { $custom_colors[ $key ]['color'] = $palette[$active][4]['color']; } if ( $value['_id'] == 'kadence6' ) { $custom_colors[ $key ]['color'] = $palette[$active][5]['color']; } if ( $value['_id'] == 'kadence7' ) { $custom_colors[ $key ]['color'] = $palette[$active][6]['color']; } if ( $value['_id'] == 'kadence8' ) { $custom_colors[ $key ]['color'] = $palette[$active][7]['color']; } if ( $value['_id'] == 'kadence9' ) { $custom_colors[ $key ]['color'] = $palette[$active][8]['color']; } } } if ( $kadence_add ) { \Elementor\Plugin::$instance->kits_manager->update_kit_settings_based_on_option( 'custom_colors', $custom_colors ); } } if ( $update_palette ) { update_option( 'kadence_global_palette', json_encode( $palette ) ); } } } } /** * Add some css styles for elementor. */ public function add_styles() { wp_enqueue_style( 'kadence-elementor', get_theme_file_uri( '/assets/css/elementor.min.css' ), array(), KADENCE_VERSION ); } /** * Add some css styles for elementor admin. */ public function elementor_add_scripts() { if ( apply_filters( 'kadence_add_global_colors_to_elementor', true ) ) { wp_enqueue_style( 'kadence-elementor-admin', get_theme_file_uri( '/assets/css/elementor-admin.min.css' ), array(), KADENCE_VERSION ); } } /** * Add some css styles for Restrict Content Pro */ public function elementor_add_theme_colors() { if ( apply_filters( 'kadence_add_global_colors_to_elementor', true ) ) { // // Prevent Errors. if ( ! current_user_can( 'edit_theme_options' ) ) { return; } $theme_colors = array( array( '_id' => 'kadence1', 'title' => __( 'Theme Accent', 'kadence' ), 'color' => kadence()->palette_option( 'palette1' ), ), array( '_id' => 'kadence2', 'title' => __( 'Theme Accent - alt', 'kadence' ), 'color' => kadence()->palette_option( 'palette2' ), ), array( '_id' => 'kadence3', 'title' => __( 'Strongest text', 'kadence' ), 'color' => kadence()->palette_option( 'palette3' ), ), array( '_id' => 'kadence4', 'title' => __( 'Strong Text', 'kadence' ), 'color' => kadence()->palette_option( 'palette4' ), ), array( '_id' => 'kadence5', 'title' => __( 'Medium text', 'kadence' ), 'color' => kadence()->palette_option( 'palette5' ), ), array( '_id' => 'kadence6', 'title' => __( 'Subtle Text', 'kadence' ), 'color' => kadence()->palette_option( 'palette6' ), ), array( '_id' => 'kadence7', 'title' => __( 'Subtle Background', 'kadence' ), 'color' => kadence()->palette_option( 'palette7' ), ), array( '_id' => 'kadence8', 'title' => __( 'Lighter Background', 'kadence' ), 'color' => kadence()->palette_option( 'palette8' ), ), array( '_id' => 'kadence9', 'title' => __( 'White or offwhite', 'kadence' ), 'color' => kadence()->palette_option( 'palette9' ), ), ); $theme_placeholder_colors = array( array( '_id' => 'palette1', 'title' => __( 'Theme Accent', 'kadence' ), 'color' => kadence()->palette_option( 'palette1' ), ), array( '_id' => 'palette2', 'title' => __( 'Theme Accent - alt', 'kadence' ), 'color' => kadence()->palette_option( 'palette2' ), ), array( '_id' => 'palette3', 'title' => __( 'Strongest text', 'kadence' ), 'color' => kadence()->palette_option( 'palette3' ), ), array( '_id' => 'palette4', 'title' => __( 'Strong Text', 'kadence' ), 'color' => kadence()->palette_option( 'palette4' ), ), array( '_id' => 'palette5', 'title' => __( 'Medium text', 'kadence' ), 'color' => kadence()->palette_option( 'palette5' ), ), array( '_id' => 'palette6', 'title' => __( 'Subtle Text', 'kadence' ), 'color' => kadence()->palette_option( 'palette6' ), ), array( '_id' => 'palette7', 'title' => __( 'Subtle Background', 'kadence' ), 'color' => kadence()->palette_option( 'palette7' ), ), array( '_id' => 'palette8', 'title' => __( 'Lighter Background', 'kadence' ), 'color' => kadence()->palette_option( 'palette8' ), ), array( '_id' => 'palette9', 'title' => __( 'White or offwhite', 'kadence' ), 'color' => kadence()->palette_option( 'palette9' ), ), ); // Prevent Errors. if ( ! method_exists( \Elementor\Plugin::$instance->kits_manager, 'get_current_settings' ) ) { return; } $current = \Elementor\Plugin::$instance->kits_manager->get_current_settings(); if ( $current && isset( $current['custom_colors'] ) ) { $custom_colors = $current['custom_colors']; $kadence_add_array = array( 'kadence1' => true, 'kadence2' => true, 'kadence3' => true, 'kadence4' => true, 'kadence5' => true, 'kadence6' => true, 'kadence7' => true, 'kadence8' => true, 'kadence9' => true, ); $kadence_add = true; $clear_cache = false; $kadence = array( 'kadence1', 'kadence2', 'kadence3', 'kadence4', 'kadence5', 'kadence6', 'kadence7', 'kadence8', 'kadence9' ); foreach ( $custom_colors as $key => $value ) { if ( is_array( $value ) && isset( $value['_id'] ) && in_array( $value['_id'], $kadence ) ) { $kadence_add = false; if ( $value['_id'] == 'kadence1' ) { if ( $custom_colors[ $key ]['color'] !== $theme_colors[0]['color'] ) { $clear_cache = true; } $kadence_add_array['kadence1'] = false; $custom_colors[ $key ] = $theme_colors[0]; } if ( $value['_id'] == 'kadence2' ) { if ( $custom_colors[ $key ]['color'] !== $theme_colors[1]['color'] ) { $clear_cache = true; } $kadence_add_array['kadence2'] = false; $custom_colors[ $key ] = $theme_colors[1]; } if ( $value['_id'] == 'kadence3' ) { if ( $custom_colors[ $key ]['color'] !== $theme_colors[2]['color'] ) { $clear_cache = true; } $kadence_add_array['kadence3'] = false; $custom_colors[ $key ] = $theme_colors[2]; } if ( $value['_id'] == 'kadence4' ) { if ( $custom_colors[ $key ]['color'] !== $theme_colors[3]['color'] ) { $clear_cache = true; } $kadence_add_array['kadence4'] = false; $custom_colors[ $key ] = $theme_colors[3]; } if ( $value['_id'] == 'kadence5' ) { if ( $custom_colors[ $key ]['color'] !== $theme_colors[4]['color'] ) { $clear_cache = true; } $kadence_add_array['kadence5'] = false; $custom_colors[ $key ] = $theme_colors[4]; } if ( $value['_id'] == 'kadence6' ) { if ( $custom_colors[ $key ]['color'] !== $theme_colors[5]['color'] ) { $clear_cache = true; } $kadence_add_array['kadence6'] = false; $custom_colors[ $key ] = $theme_colors[5]; } if ( $value['_id'] == 'kadence7' ) { if ( $custom_colors[ $key ]['color'] !== $theme_colors[6]['color'] ) { $clear_cache = true; } $kadence_add_array['kadence7'] = false; $custom_colors[ $key ] = $theme_colors[6]; } if ( $value['_id'] == 'kadence8' ) { if ( $custom_colors[ $key ]['color'] !== $theme_colors[7]['color'] ) { $clear_cache = true; } $kadence_add_array['kadence8'] = false; $custom_colors[ $key ] = $theme_colors[7]; } if ( $value['_id'] == 'kadence9' ) { if ( $custom_colors[ $key ]['color'] !== $theme_colors[8]['color'] ) { $clear_cache = true; } $kadence_add_array['kadence9'] = false; $custom_colors[ $key ] = $theme_colors[8]; } } } if ( $kadence_add ) { $custom_colors = array_merge( $theme_colors, $custom_colors ); } else { $i = 0; $new_add = array(); foreach ( $kadence_add_array as $key => $value ) { if ( $value ) { $new_add[] = $theme_colors[ $i ]; } $i++; } // Somehow colors were removed so we need to add them back in. if ( ! empty( $new_add ) ) { $custom_colors = array_merge( $new_add, $custom_colors ); } } // error_log( 'Here is the error?' ); \Elementor\Plugin::$instance->kits_manager->update_kit_settings_based_on_option( 'custom_colors', $custom_colors ); \Elementor\Plugin::$instance->kits_manager->update_kit_settings_based_on_option( 'kadence_colors', $theme_placeholder_colors ); // Refresh cache. if ( $clear_cache ) { // If the palette was updated in the customizer then we need to clear all the css. \Elementor\Plugin::instance()->files_manager->clear_cache(); } } } } /** * Add in new Custom Controls for Theme Colors. */ public function elementor_add_theme_color_controls( $tab, $args ) { if ( apply_filters( 'kadence_add_global_colors_to_elementor', true ) ) { $tab->start_controls_section( 'section_theme_global_colors', array( 'label' => __( 'Theme Global Colors', 'kadence' ), 'tab' => 'global-colors', ) ); $repeater = new Repeater(); $repeater->add_control( 'title', array( 'type' => Controls_Manager::TEXT, 'label_block' => true, 'required' => true, ) ); // Color Value $repeater->add_control( 'color', array( 'type' => Controls_Manager::COLOR, 'label_block' => true, 'dynamic' => [], 'selectors' => array( '{{WRAPPER}}.el-is-editing' => '--global-{{_id.VALUE}}: {{VALUE}}', ), 'global' => array( 'active' => false, ), ) ); $theme_colors = array( array( '_id' => 'palette1', 'title' => __( 'Theme Accent', 'kadence' ), 'color' => kadence()->palette_option( 'palette1' ), ), array( '_id' => 'palette2', 'title' => __( 'Theme Accent - alt', 'kadence' ), 'color' => kadence()->palette_option( 'palette2' ), ), array( '_id' => 'palette3', 'title' => __( 'Strongest text', 'kadence' ), 'color' => kadence()->palette_option( 'palette3' ), ), array( '_id' => 'palette4', 'title' => __( 'Strong Text', 'kadence' ), 'color' => kadence()->palette_option( 'palette4' ), ), array( '_id' => 'palette5', 'title' => __( 'Medium text', 'kadence' ), 'color' => kadence()->palette_option( 'palette5' ), ), array( '_id' => 'palette6', 'title' => __( 'Subtle Text', 'kadence' ), 'color' => kadence()->palette_option( 'palette6' ), ), array( '_id' => 'palette7', 'title' => __( 'Subtle Background', 'kadence' ), 'color' => kadence()->palette_option( 'palette7' ), ), array( '_id' => 'palette8', 'title' => __( 'Lighter Background', 'kadence' ), 'color' => kadence()->palette_option( 'palette8' ), ), array( '_id' => 'palette9', 'title' => __( 'White or offwhite', 'kadence' ), 'color' => kadence()->palette_option( 'palette9' ), ), ); $tab->add_control( 'kadence_colors', array( 'type' => Global_Style_Repeater::CONTROL_TYPE, 'fields' => $repeater->get_controls(), 'default' => $theme_colors, 'item_actions' => array( 'add' => false, 'remove' => false, ), ) ); $tab->end_controls_section(); } } /** * Make sure it's not a post, then set the meta if the content is empty and we are in elementor. */ public function elementor_page_meta_setting() { if ( ! apply_filters( 'kadence_theme_elementor_default', true ) || 'post' === get_post_type() ) { return; } if ( ! $this->is_elementor() ) { return; } global $post; $page_id = get_the_ID(); $page_builder_layout = get_post_meta( $page_id, '_kad_pagebuilder_layout_flag', true ); if ( isset( $post ) && empty( $page_builder_layout ) && ( is_admin() || is_singular() ) ) { if ( empty( $post->post_content ) && $this->is_built_with_elementor( $page_id ) ) { update_post_meta( $page_id, '_kad_pagebuilder_layout_flag', 'disabled' ); update_post_meta( $page_id, '_kad_post_title', 'hide' ); update_post_meta( $page_id, '_kad_post_content_style', 'unboxed' ); update_post_meta( $page_id, '_kad_post_vertical_padding', 'hide' ); update_post_meta( $page_id, '_kad_post_feature', 'hide' ); $post_layout = get_post_meta( $page_id, '_kad_post_layout', true ); if ( empty( $post_layout ) || 'default' === $post_layout ) { update_post_meta( $page_id, '_kad_post_layout', 'fullwidth' ); } $post_title = get_post_meta( $page_id, '_kad_post_title', true ); if ( empty( $post_title ) || 'default' === $post_title ) { update_post_meta( $page_id, '_kad_post_title', 'hide' ); } } } } /** * Check if page is built with elementor * * @return boolean true if elementor edit false if not. */ private function is_built_with_elementor( $page_id ) { return Elementor\Plugin::$instance->db->is_built_with_elementor( $page_id ); } /** * Check if in elementor editor. * * @return boolean true if elementor edit false if not. */ private function is_elementor() { if ( ( isset( $_REQUEST['action'] ) && 'elementor' === $_REQUEST['action'] ) || isset( $_REQUEST['elementor-preview'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended return true; } return false; } /** * Check for use. Then * Run all the Actions / Filters. */ public function init_header_footer_support() { add_theme_support( 'header-footer-elementor' ); add_action( 'wp', array( $this, 'loading_header_footer_support' ) ); } /** * Check for use. Then * Run all the Actions / Filters. */ public function loading_header_footer_support() { if ( function_exists( 'hfe_header_enabled' ) ) { if ( hfe_header_enabled() ) { add_action( 'template_redirect', array( $this, 'remove_theme_header' ) ); add_action( 'kadence_header', 'hfe_render_header' ); } } if ( function_exists( 'hfe_footer_enabled' ) ) { if ( hfe_footer_enabled() ) { add_action( 'template_redirect', array( $this, 'remove_theme_footer' ) ); add_action( 'kadence_footer', 'hfe_render_footer' ); } } } /** * Disable header from the theme. */ public function remove_theme_header() { remove_action( 'kadence_header', 'Kadence\header_markup' ); } /** * Disable header from the theme. */ public function remove_theme_footer() { remove_action( 'kadence_footer', 'Kadence\footer_markup' ); } }