get_attachment_id( $logo_value );
if ( ! empty( $logo_attachement_id ) ) {
set_theme_mod( 'custom_logo', $logo_attachement_id );
}
}
/**
* Returns attachement id from an url.
*
* @param string $url Attachement url.
* @access public
* @since 1.1.49
*
* @return int|mixed
*/
private function get_attachment_id( $url ) {
$attachment_id = 0;
$dir = wp_upload_dir();
if ( false !== strpos( $url, $dir['baseurl'] . '/' ) ) { // Is URL in uploads directory?
$file = basename( $url );
$query_args = array(
'post_type' => 'attachment',
'post_status' => 'inherit',
'fields' => 'ids',
'meta_query' => array(
array(
'value' => $file,
'compare' => 'LIKE',
'key' => '_wp_attachment_metadata',
),
),
);
$query = new WP_Query( $query_args );
if ( $query->have_posts() ) {
foreach ( $query->posts as $post_id ) {
$meta = wp_get_attachment_metadata( $post_id );
$original_file = basename( $meta['file'] );
$cropped_image_files = wp_list_pluck( $meta['sizes'], 'file' );
if ( $original_file === $file || in_array( $file, $cropped_image_files ) ) {
$attachment_id = $post_id;
break;
}
}
wp_reset_postdata();
}
}
return $attachment_id;
}
/**
* Update sections order.
*
* @param string $previous_theme_content All settings from previous theme.
* @param array $section_match Matching sections from previous theme and hestia.
* @access public
* @since 1.1.49
*/
public function update_sections_order( $previous_theme_content, $section_match ) {
$result_order = array(
'hestia_clients_bar' => 10,
'hestia_features' => 15,
'hestia_about' => 20,
'hestia_shop' => 25,
'hestia_team' => 30,
'hestia_testimonials' => 35,
'hestia_ribbon' => 40,
'hestia_blog' => 45,
'hestia_contact' => 50,
'hestia_pricing' => 55,
'sidebar-widgets-subscribe-widgets' => 60,
);
if ( empty( $previous_theme_content ) ) {
set_theme_mod( 'sections_order', json_encode( $result_order ) );
return;
}
// This means that it's a pro version of the theme we want to import
$prev_oreder = json_decode( $previous_theme_content );
if ( ! empty( $prev_oreder ) ) {
foreach ( $section_match as $hestia_section => $imported_sction ) {
$result_order[ $hestia_section ] = $prev_oreder->$imported_sction;
}
}
set_theme_mod( 'sections_order', json_encode( $result_order ) );
}
/**
* Create Json for slider control in hestia.
*
* @param array $previous_theme_content All settings from previous theme.
* @access public
* @since 1.1.49
*/
public function update_big_title( $previous_theme_content, $settings ) {
$hestia_slider_content = get_theme_mod( 'hestia_slider_content' );
if ( ! empty( $hestia_slider_content ) ) {
return;
}
$result = array();
foreach ( $settings as $item => $name ) {
if ( ! empty( $previous_theme_content[ $name ] ) ) {
$result[ $item ] = $previous_theme_content[ $name ];
}
}
if ( ! empty( $result ) ) {
set_theme_mod( 'hestia_slider_content', '[' . json_encode( $result ) . ']' );
}
}
/**
* Create html from about section add add it to about section content in hestia.
*
* @param array $about_content About content.
* @access public
* @since 1.1.49
*/
public function about_to_html( $about_content ) {
$title = ! empty( $about_content['title'] ) ? $about_content['title'] : '';
$text = ! empty( $about_content['text'] ) ? $about_content['text'] : '';
$image = ! empty( $about_content['image'] ) ? $about_content['image'] : '';
$layout = ! empty( $about_content['layout'] ) ? $about_content['layout'] : '';
$page_editor = get_theme_mod( 'hestia_page_editor' );
$about_html = ( ! empty( $page_editor ) ? $page_editor : '' );
if ( ! empty( $title ) ) {
$about_html .= '
' . wp_kses_post( $title ) . '
';
}
if ( ! empty( $text ) || ! empty( $image ) ) {
$class_to_add = ( empty( $image ) ? 'col-md-12' : 'col-md-8' );
$about_html .= '';
if ( $layout === 'about_layout2' ) {
if ( ! empty( $image ) ) {
$about_html .= '
';
}
}
$about_html .= '
';
if ( ! empty( $text ) ) {
$about_html .= wp_kses_post( $text );
}
$about_html .= '
';
if ( $layout !== 'about_layout2' ) {
if ( ! empty( $image ) ) {
$about_html .= '
';
}
}
$about_html .= '
';
}
if ( ! empty( $about_html ) ) {
set_theme_mod( 'hestia_page_editor', $about_html );
$this->sync_content_from_control( $about_html );
}
}
/**
* Create html from contact section add add it to about section content in hestia.
*
* @param string $contact_content Section content.
* @access public
* @since 1.1.49
*/
public function contact_to_html( $contact_content ) {
if ( empty( $contact_content ) ) {
return;
}
$content = $this->update_icons( $contact_content );
if ( ! empty( $content ) ) {
$data = json_decode( $content, true );
if ( ! empty( $data ) ) {
$contact_html = '';
foreach ( $data as $content_block ) {
$contact_html .= '';
if ( ! empty( $content_block['icon_value'] ) ) {
$contact_html .= '
';
}
if ( ! empty( $content_block['text'] ) ) {
$contact_html .= '
';
}
$contact_html .= '
';
}
if ( ! empty( $contact_html ) ) {
set_theme_mod( 'hestia_contact_content_new', $contact_html );
}
}
}
}
/**
* Parallax theme has stamp icons and font awesome while hestia has only font awesome. If a stamp icon is used,
* replace it with an icon form font awesome
*
* @param string $json Repeater content in json format.
* @access public
* @since 1.1.49
*
* @return string
*/
public function update_icons( $json ) {
if ( empty( $json ) ) {
return '';
}
$data = json_decode( $json, true );
if ( ! empty( $data ) ) {
foreach ( $data as $item => $values ) {
if ( ! empty( $values['icon_value'] ) && strpos( $values['icon_value'], 'icon-' ) !== false ) {
$data[ $item ]['icon_value'] = 'fa-circle-o';
}
if ( ! empty( $values['choice'] ) ) {
if ( strpos( $values['choice'], '_icon' ) !== false ) {
$data[ $item ]['choice'] = 'customizer_repeater_icon';
}
if ( strpos( $values['choice'], '_image' ) !== false ) {
$data[ $item ]['choice'] = 'customizer_repeater_image';
}
}
$color = get_theme_mod( 'accent_color' );
if ( ! empty( $color ) ) {
$data[ $item ]['color'] = $color;
}
}
}
return json_encode( $data );
}
/**
* Update Shop category control.
* In A, P, L shop categories are given by name while in Hestia we need its id
*
* @param string $shop_cat Shop category name.
* @access public
* @since 1.1.49
*/
public function update_shop_category( $shop_cat ) {
if ( ! empty( $shop_cat ) ) {
$category = get_term_by( 'slug', $shop_cat, 'product_cat' );
if ( ! empty( $category ) && ! empty( $category->term_id ) ) {
$cat_id = $category->term_id;
if ( ! empty( $cat_id ) ) {
set_theme_mod( 'hestia_shop_categories', array( $cat_id ) );
}
}
}
}
/**
* Add content form features ribbon to html and add it to about section
*
* @param string $features_ribbon_content Section's content.
* @access public
* @since 1.1.49
*/
public function features_ribbon_to_html( $features_ribbon_content ) {
if ( empty( $features_ribbon_content ) ) {
return;
}
$page_editor = get_theme_mod( 'hestia_page_editor' );
$ribbon_html = ( ! empty( $page_editor ) ? $page_editor : '' );
$section_content = json_decode( $features_ribbon_content );
if ( ! empty( $section_content ) ) {
$i = 1;
$ribbon_html .= '';
foreach ( $section_content as $ribbon_item ) {
$choice = ! empty( $ribbon_item->choice ) ? $ribbon_item->choice : 'parallax_icon';
$icon = ! empty( $ribbon_item->icon_value ) ? $ribbon_item->icon_value : '';
$image = ! empty( $ribbon_item->image_url ) ? $ribbon_item->image_url : '';
$title = ! empty( $ribbon_item->title ) ? $ribbon_item->title : '';
$link = ! empty( $ribbon_item->link ) ? $ribbon_item->link : '';
$subtitle = ! empty( $ribbon_item->subtitle ) ? $ribbon_item->subtitle : '';
$ribbon_html .= '
';
if ( $i % 3 == 0 ) {
$ribbon_html .= '
';
$ribbon_html .= '';
}
$i++;
}
$ribbon_html .= '
';
}
if ( ! empty( $ribbon_html ) ) {
set_theme_mod( 'hestia_page_editor', $ribbon_html );
$this->sync_content_from_control( $ribbon_html );
}
}
/**
* Add content form shortcodes section to html and add it to about section
*
* @param string $shortcodes_content Section's content.
* @access public
* @since 1.1.49
*/
public function shortcodes_section_to_html( $shortcodes_content ) {
$execute = get_option( 'should_import_zerif_shortcodes' );
if ( $execute !== false ) {
return;
}
if ( empty( $shortcodes_content ) ) {
return;
}
$page_editor = get_theme_mod( 'hestia_page_editor' );
$shortcode_html = ( ! empty( $page_editor ) ? $page_editor : '' );
$section_content = json_decode( $shortcodes_content );
if ( ! empty( $section_content ) && is_array( $section_content ) ) {
foreach ( $section_content as $shortcode_section ) {
$title = ( ! empty( $shortcode_section->title ) ? $shortcode_section->title : '' );
$subtitle = ( ! empty( $shortcode_section->subtitle ) ? $shortcode_section->subtitle : '' );
$shortcode = ( ! empty( $shortcode_section->shortcode ) ? $shortcode_section->shortcode : '' );
$shortcode_html .= '';
if ( ! empty( $title ) || ! empty( $subtitle ) ) {
$shortcode_html .= '';
if ( ! empty( $title ) ) {
$shortcode_html .= '
' . wp_kses_post( $title ) . '
';
}
if ( ! empty( $subtitle ) ) {
$shortcode_html .= '' . wp_kses_post( $subtitle ) . '
';
}
$shortcode_html .= ' ';
}
if ( ! empty( $shortcode ) ) {
$shortcode_html .= '';
}
$shortcode_html .= '';
if ( ! empty( $shortcode_html ) ) {
set_theme_mod( 'hestia_page_editor', $shortcode_html );
$this->sync_content_from_control( $shortcode_html );
}
}
}
update_option( 'should_import_zerif_shortcodes', true );
}
/**
* Remove sidebars if full width is checked in imported theme.
*
* @param bool $full_width_option Full width option.
* @access public
* @since 1.1.49
*/
public function update_layout( $full_width_option ) {
if ( (bool) $full_width_option === true ) {
set_theme_mod( 'hestia_page_sidebar_layout', 'full-width' );
set_theme_mod( 'hestia_blog_sidebar_layout', 'full-width' );
}
}
/**
* Update nav menus.
*
* @param string $footer_socials_content Footer socials.
* @param string $nav_locations Old nav locations.
* @access public
* @since 1.1.49
*/
public function update_menus( $footer_socials_content, $nav_locations ) {
$theme_navs = get_theme_mod( 'nav_menu_locations' );
if ( empty( $theme_navs['primary'] ) && ! empty( $nav_locations['primary'] ) ) {
$theme_navs['primary'] = $nav_locations['primary'];
}
if ( empty( $theme_navs['footer'] ) && ! empty( $nav_locations['parallax_footer_menu'] ) ) {
$theme_navs['footer'] = $nav_locations['parallax_footer_menu'];
}
if ( empty( $theme_navs['top-bar-menu'] ) && ! empty( $footer_socials_content ) ) {
$menu_name = __( 'Header socials menu', 'hestia' );
$menu_exists = wp_get_nav_menu_object( $menu_name );
if ( ! $menu_exists ) {
$menu_id = wp_create_nav_menu( $menu_name );
$icons_array = json_decode( $footer_socials_content );
if ( ! empty( $icons_array ) && is_array( $icons_array ) ) {
foreach ( $icons_array as $social ) {
if ( ! empty( $social->link ) ) {
wp_update_nav_menu_item(
$menu_id,
0,
array(
'menu-item-title' => __( 'Custom Page', 'hestia' ),
'menu-item-url' => $social->link,
'menu-item-status' => 'publish',
)
);
}
}
}
$theme_navs['top-bar-menu'] = $menu_id;
set_theme_mod( 'hestia_top_bar_hide', false );
}
}
set_theme_mod( 'nav_menu_locations', $theme_navs );
}
/**
* Move widgets from old sidebars to hestia's sidebars
*
* @access public
* @since 1.1.49
*/
public function update_sidebars() {
$widgets_from_old_theme = wp_get_sidebars_widgets();
$new_widget_array = array();
if ( ! empty( $widgets_from_old_theme['sidebar-1'] ) ) {
$new_widget_array['sidebar-1'] = $widgets_from_old_theme['sidebar-1'];
}
if ( ! empty( $widgets_from_old_theme['footer-area'] ) ) {
$new_widget_array['footer-one-widgets'] = $widgets_from_old_theme['footer-area'];
}
if ( ! empty( $widgets_from_old_theme['footer-area-2'] ) ) {
$new_widget_array['footer-two-widgets'] = $widgets_from_old_theme['footer-area-2'];
}
if ( ! empty( $widgets_from_old_theme['footer-area-3'] ) || ! empty( $widgets_from_old_theme['footer-area-4'] ) ) {
$footer_3_content = array();
if ( ! empty( $widgets_from_old_theme['footer-area-3'] ) ) {
$footer_3_content = array_merge( $footer_3_content, $widgets_from_old_theme['footer-area-3'] );
}
if ( ! empty( $widgets_from_old_theme['footer-area-4'] ) ) {
$footer_3_content = array_merge( $footer_3_content, $widgets_from_old_theme['footer-area-4'] );
}
$new_widget_array['footer-three-widgets'] = $footer_3_content;
}
if ( ! isset( $new_widget_array['wp_inactive_widgets'] ) ) {
$new_widget_array['wp_inactive_widgets'] = array();
}
update_option( 'sidebars_widgets', $new_widget_array );
}
/**
* Update header layout.
*
* @param string $header_layout Header layout.
* @access public
* @since 1.1.49
*/
public function update_header_layout( $header_layout ) {
if ( $header_layout === 'layout2' ) {
set_theme_mod( 'hestia_slider_alignment', 'left' );
}
}
/**
* Moves portfolios posts from Parallax cpt portfolio to Jetpack portfolio cpt.
*
* @param string $post_type Name of the cpt.
* @access public
* @since 1.1.51
*/
public function update_portfolio( $post_type ) {
if ( ! class_exists( 'Jetpack' ) || ! ( Jetpack::is_module_active( 'custom-content-types' ) ) ) {
return;
}
$post = new WP_Query(
array(
'post_type' => $post_type,
)
);
if ( $post->have_posts() ) {
while ( $post->have_posts() ) {
$post->the_post();
$pid = get_the_ID();
/* Create post */
$title = get_the_title();
$content = get_the_content();
$post_id = wp_insert_post(
array(
'post_type' => 'jetpack-portfolio',
'post_title' => $title,
'post_content' => $content,
'post_status' => 'publish',
)
);
/* Update post thumbnail */
$post_thumbnail_id = get_post_thumbnail_id( $pid );
if ( ! empty( $post_id ) && ! empty( $post_thumbnail_id ) ) {
update_post_meta( $post_id, '_thumbnail_id', $post_thumbnail_id );
}
}
wp_reset_postdata();
}
}
/**
* Sync frontpage content with customizer control
*
* @param string $value New value.
*/
protected function sync_content_from_control( $value ) {
$frontpage_id = get_option( 'page_on_front' );
if ( ! empty( $frontpage_id ) && ! empty( $value ) ) {
if ( ! wp_is_post_revision( $frontpage_id ) ) {
// update the post, which calls save_post again
$post = array(
'ID' => $frontpage_id,
'post_content' => wp_kses_post( $value ),
);
wp_update_post( $post );
}
}
}
}