2020-04-07 13:03:04 +00:00
< ? php
defined ( 'WPINC' ) or die ;
require plugin_dir_path ( __FILE__ ) . 'post-type.php' ;
require plugin_dir_path ( __FILE__ ) . 'global-locations.php' ;
require plugin_dir_path ( __FILE__ ) . 'metabox.php' ;
require plugin_dir_path ( __FILE__ ) . 'page-header.php' ;
require plugin_dir_path ( __FILE__ ) . 'post-image.php' ;
add_action ( 'wp' , 'generate_page_header_do_setup' );
/**
* Adds our page headers in their correct places , and sets any necessary filters .
*
* @ since 1.4
*/
function generate_page_header_do_setup () {
if ( is_admin () ) {
return ;
}
$options = generate_page_header_get_options ();
2020-08-13 14:53:39 +00:00
if ( ! $options ) {
return ;
}
2020-04-07 13:03:04 +00:00
$global_locations = wp_parse_args ( get_option ( 'generate_page_header_global_locations' , array () ), '' );
// Remove elements if they're being added as a template tag
if ( '' !== $options [ 'content' ] ) {
if ( strpos ( $options [ 'content' ], '{{post_title}}' ) !== false ) {
add_filter ( 'generate_show_title' , '__return_false' );
remove_action ( 'generate_archive_title' , 'generate_archive_title' );
add_filter ( 'post_class' , 'generate_page_header_remove_hentry' );
}
if ( strpos ( $options [ 'content' ], '{{post_date}}' ) !== false ) {
add_filter ( 'generate_post_date' , '__return_false' );
add_filter ( 'post_class' , 'generate_page_header_remove_hentry' );
}
if ( strpos ( $options [ 'content' ], '{{post_author}}' ) !== false ) {
add_filter ( 'generate_post_author' , '__return_false' );
add_filter ( 'post_class' , 'generate_page_header_remove_hentry' );
}
if ( strpos ( $options [ 'content' ], '{{post_terms.category}}' ) !== false ) {
add_filter ( 'generate_show_categories' , '__return_false' );
}
if ( strpos ( $options [ 'content' ], '{{post_terms.post_tag}}' ) !== false ) {
add_filter ( 'generate_show_tags' , '__return_false' );
}
}
// Replace our logos if set
if ( generate_page_header_logo_exists () && $options [ 'logo_url' ] ) {
add_filter ( 'generate_logo' , 'generate_page_header_replace_logo' );
}
if ( generate_page_header_navigation_logo_exists () && $options [ 'navigation_logo_url' ] ) {
add_filter ( 'generate_navigation_logo' , 'generate_page_header_replace_navigation_logo' );
}
// Single posts
if ( is_singular () ) {
if ( 'inside-content' == generate_get_page_header_location () ) {
add_action ( 'generate_before_content' , 'generate_page_header' );
}
if ( 'below-title' == generate_get_page_header_location () ) {
add_action ( 'generate_after_entry_header' , 'generate_page_header' );
}
if ( 'above-content' == generate_get_page_header_location () ) {
add_action ( 'generate_after_header' , 'generate_page_header' );
}
}
/**
* Need to check all 3
* @ see https :// core . trac . wordpress . org / ticket / 18636
*/
if ( is_tax () || is_category () || is_tag () ) {
add_action ( 'generate_after_header' , 'generate_page_header' );
}
// Blog page header
if ( generate_get_blog_page_header () ) {
add_action ( 'generate_after_header' , 'generate_page_header' );
}
// Custom post types (excluding single posts)
if ( isset ( $global_locations [ get_post_type ( get_the_ID () ) ] ) && '' !== $global_locations [ get_post_type ( get_the_ID () ) ] && ! is_singular () ) {
add_action ( 'generate_after_header' , 'generate_page_header' );
}
// Search results
if ( is_search () ) {
add_action ( 'generate_after_header' , 'generate_page_header' );
}
// 404 page
if ( is_404 () ) {
add_action ( 'generate_after_header' , 'generate_page_header' );
}
}
/**
* Gets our post meta if it exists .
* If it doesn ' t , return an empty string .
*
* @ since 1.4
*
* @ return string | bool
*/
function generate_page_header_get_post_meta ( $post_id , $key = '' , $single = false ) {
return null !== get_post_meta ( $post_id , $key , $single ) ? get_post_meta ( $post_id , $key , $single ) : '' ;
}
/**
* Put all of our meta box settings into an array we can use
*
* We set the post ID based on various settings in here so we can use the same
* settings no matter the location .
*
* @ since 1.4
*
* @ param int $id The ID of our page header to return .
* @ return array All our meta box settings .
*/
function generate_page_header_get_options ( $id = false ) {
$global_locations = wp_parse_args ( get_option ( 'generate_page_header_global_locations' , array () ), '' );
$post_type = get_post_type ( get_the_ID () );
// Get our term meta if we're on a taxonomy
// Need to check all 3
// @see https://core.trac.wordpress.org/ticket/18636
if ( is_tax () || is_category () || is_tag () && ! $id && ! is_singular () ) {
$queried_object = get_queried_object ();
if ( is_object ( $queried_object ) ) {
if ( isset ( $global_locations [ $queried_object -> taxonomy ] ) && '' !== $global_locations [ $queried_object -> taxonomy ] && ! $id ) {
$id = $global_locations [ $queried_object -> taxonomy ];
if ( 'publish' !== get_post_status ( $id ) ) {
$id = false ;
}
}
$tax_post_id = get_term_meta ( $queried_object -> term_id , '_generate-select-page-header' , true );
if ( '' !== $tax_post_id && 'publish' == get_post_status ( $tax_post_id ) ) {
$id = $tax_post_id ;
}
}
}
// Set our blog page ID if we're on the blog
if ( isset ( $global_locations [ 'blog' ] ) && generate_get_blog_page_header () && ! $id ) {
$id = $global_locations [ 'blog' ];
}
// Archive post types
if ( isset ( $global_locations [ $post_type . '_archives' ] ) && '' !== $global_locations [ $post_type . '_archives' ] && ! $id && is_post_type_archive ( $post_type ) ) {
$id = $global_locations [ $post_type . '_archives' ];
}
// Search results
if ( isset ( $global_locations [ 'search_results' ] ) && '' !== $global_locations [ 'search_results' ] && ! $id && is_search () ) {
$id = $global_locations [ 'search_results' ];
}
// 404
if ( isset ( $global_locations [ '404' ] ) && '' !== $global_locations [ '404' ] && ! $id && is_404 () ) {
$id = $global_locations [ '404' ];
}
if ( is_singular () ) {
// Single post types
if ( isset ( $global_locations [ $post_type ] ) && '' !== $global_locations [ $post_type ] && ! $id ) {
$id = $global_locations [ $post_type ];
if ( 'publish' !== get_post_status ( $id ) ) {
$id = false ;
}
}
// Use our Page Header CPT
// If it doesn't exist, use our on-page meta box
$cpt_post_id = get_post_meta ( get_the_ID (), '_generate-select-page-header' , true );
if ( '' !== $cpt_post_id && 'publish' == get_post_status ( $cpt_post_id ) ) {
$id = get_post_meta ( get_the_ID (), '_generate-select-page-header' , true );
} elseif ( get_post_meta ( get_the_ID (), '_meta-generate-page-header-image' , true ) || get_post_meta ( get_the_ID (), '_meta-generate-page-header-content' , true ) ) {
// Get the page ID if we have a featured image, custom image or page header content
$id = get_the_ID ();
}
// If we still don't have an ID, check if we have a featured image to show
if ( ! $id && has_post_thumbnail () ) {
$id = get_the_ID ();
}
}
$id = apply_filters ( 'generate_page_header_id' , $id );
// Bail if we don't have an ID
if ( ! $id ) {
return ;
}
// Figure out our image ID
$image_id = null ;
if ( get_post_meta ( $id , '_meta-generate-page-header-image-id' , true ) ) {
$image_id = get_post_meta ( $id , '_meta-generate-page-header-image-id' , true );
} elseif ( has_post_thumbnail ( $id ) ) {
$image_id = get_post_thumbnail_id ( $id , 'full' );
} elseif ( is_singular () ) {
$image_id = get_post_thumbnail_id ( get_the_ID (), 'full' );
}
$options = array (
'page_header_id' => $id ,
'image_url' => get_post_meta ( $id , '_meta-generate-page-header-image' , true ),
'image_id' => $image_id ,
'image_link' => get_post_meta ( $id , '_meta-generate-page-header-image-link' , true ),
'image_resize' => get_post_meta ( $id , '_meta-generate-page-header-enable-image-crop' , true ),
'image_width' => get_post_meta ( $id , '_meta-generate-page-header-image-width' , true ),
'image_height' => get_post_meta ( $id , '_meta-generate-page-header-image-height' , true ),
'content' => get_post_meta ( $id , '_meta-generate-page-header-content' , true ),
'autop' => get_post_meta ( $id , '_meta-generate-page-header-content-autop' , true ),
'add_padding' => get_post_meta ( $id , '_meta-generate-page-header-content-padding' , true ),
'background_image' => get_post_meta ( $id , '_meta-generate-page-header-image-background' , true ),
'container_type' => get_post_meta ( $id , '_meta-generate-page-header-image-background-type' , true ),
'inner_container' => get_post_meta ( $id , '_meta-generate-page-header-inner-container' , true ),
'parallax' => get_post_meta ( $id , '_meta-generate-page-header-image-background-fixed' , true ),
'background_overlay' => get_post_meta ( $id , '_meta-generate-page-header-image-background-overlay' , true ),
'full_screen' => get_post_meta ( $id , '_meta-generate-page-header-full-screen' , true ),
'vertical_center' => get_post_meta ( $id , '_meta-generate-page-header-vertical-center' , true ),
'alignment' => get_post_meta ( $id , '_meta-generate-page-header-image-background-alignment' , true ),
'padding' => get_post_meta ( $id , '_meta-generate-page-header-image-background-spacing' , true ),
'padding_unit' => get_post_meta ( $id , '_meta-generate-page-header-image-background-spacing-unit' , true ),
'x_padding' => get_post_meta ( $id , '_meta-generate-page-header-left-right-padding' , true ),
'x_padding_unit' => get_post_meta ( $id , '_meta-generate-page-header-left-right-padding-unit' , true ),
'text_color' => get_post_meta ( $id , '_meta-generate-page-header-image-background-text-color' , true ),
'background_color' => get_post_meta ( $id , '_meta-generate-page-header-image-background-color' , true ),
'link_color' => get_post_meta ( $id , '_meta-generate-page-header-image-background-link-color' , true ),
'link_color_hover' => get_post_meta ( $id , '_meta-generate-page-header-image-background-link-color-hover' , true ),
'merge' => get_post_meta ( $id , '_meta-generate-page-header-combine' , true ),
'absolute' => get_post_meta ( $id , '_meta-generate-page-header-absolute-position' , true ),
'custom_menu_colors' => get_post_meta ( $id , '_meta-generate-page-header-transparent-navigation' , true ),
'menu_background_color' => get_post_meta ( $id , '_meta-generate-page-header-navigation-background' , true ),
'menu_text_color' => get_post_meta ( $id , '_meta-generate-page-header-navigation-text' , true ),
'site_title_color' => get_post_meta ( $id , '_meta-generate-page-header-site-title' , true ),
'site_tagline_color' => get_post_meta ( $id , '_meta-generate-page-header-site-tagline' , true ),
'menu_background_color_hover' => get_post_meta ( $id , '_meta-generate-page-header-navigation-background-hover' , true ),
'menu_text_color_hover' => get_post_meta ( $id , '_meta-generate-page-header-navigation-text-hover' , true ),
'menu_background_current' => get_post_meta ( $id , '_meta-generate-page-header-navigation-background-current' , true ),
'menu_text_current' => get_post_meta ( $id , '_meta-generate-page-header-navigation-text-current' , true ),
'background_video' => get_post_meta ( $id , '_meta-generate-page-header-video' , true ),
'background_video_ogv' => get_post_meta ( $id , '_meta-generate-page-header-video-ogv' , true ),
'background_video_webm' => get_post_meta ( $id , '_meta-generate-page-header-video-webm' , true ),
'background_video_overlay' => get_post_meta ( $id , '_meta-generate-page-header-video-overlay' , true ),
'logo_url' => get_post_meta ( $id , '_meta-generate-page-header-logo' , true ),
'logo_id' => get_post_meta ( $id , '_meta-generate-page-header-logo-id' , true ),
'navigation_logo_url' => get_post_meta ( $id , '_meta-generate-page-header-navigation-logo' , true ),
'navigation_logo_id' => get_post_meta ( $id , '_meta-generate-page-header-navigation-logo-id' , true ),
);
return apply_filters ( 'generate_page_header_options' , $options );
}
/**
* A helper function to return either the URL or ID of our images .
*
* Typically we should have an ID , but this add - on used to only
* store the image URL , so we have to account for that .
*
* If we don ' t have a custom images , we check to see if we can use
* the featured image instead .
*
* @ since 1.4
*
* @ param $type What to return .
* @ param $id The ID of our post .
* @ return int | string
*/
function generate_page_header_get_image ( $type = 'URL' , $id = '' ) {
if ( '' == $id ) {
$id = get_the_ID ();
}
if ( is_attachment () ) {
return false ;
}
$options = generate_page_header_get_options ();
2020-08-13 14:53:39 +00:00
if ( ! $options ) {
return ;
}
2020-04-07 13:03:04 +00:00
$image_id = $options [ 'image_id' ];
$image_url = $options [ 'image_url' ];
// If we're getting the URL
if ( 'URL' == $type || 'ALL' == $type ) {
// If we have an image ID, get the link
if ( '' !== $image_id ) {
return esc_url ( wp_get_attachment_url ( $image_id ) );
}
// If we don't have the ID, check for the URL
if ( '' == $image_id && '' !== $image_url ) {
return esc_url ( $image_url );
}
}
// If we're getting the ID
if ( 'ID' == $type || 'ALL' == $type ) {
// If we have the ID, return it
if ( '' !== $image_id ) {
return absint ( $image_id );
}
// If we have a URL and no ID, return it
if ( '' == $image_id && '' !== $image_url ) {
if ( function_exists ( 'attachment_url_to_postid' ) ) {
return attachment_url_to_postid ( esc_url ( $image_url ) );
}
}
}
// Still here?
return false ;
}
/**
* Output our image HTML .
*
* This function figures out if we need to crop / resize the image or not ,
* then it returns the image HTML based on that .
*
* @ since 1.4
*/
function generate_page_header_get_image_output () {
$options = generate_page_header_get_options ();
2020-08-13 14:53:39 +00:00
if ( ! $options ) {
return ;
}
2020-04-07 13:03:04 +00:00
$image_url = generate_page_header_get_image ( 'URL' );
$image_id = generate_page_header_get_image ( 'ID' );
// If we're not resizing the image, we can just output the HTML here
if ( 'enable' !== $options [ 'image_resize' ] ) {
return apply_filters ( 'post_thumbnail_html' ,
wp_get_attachment_image ( $image_id , apply_filters ( 'generate_page_header_default_size' , 'full' ), '' , array ( 'itemprop' => 'image' ) ),
get_the_ID (),
$image_id ,
apply_filters ( 'generate_page_header_default_size' , 'full' ),
''
);
}
// Values when to ignore crop
$ignore_crop = array ( '' , '0' , '9999' );
// Set our image attributes
$image_atts = array (
'width' => ( in_array ( $options [ 'image_width' ], $ignore_crop ) ) ? 9999 : absint ( $options [ 'image_width' ] ),
'height' => ( in_array ( $options [ 'image_height' ], $ignore_crop ) ) ? 9999 : absint ( $options [ 'image_height' ] ),
'crop' => ( in_array ( $options [ 'image_width' ], $ignore_crop ) || in_array ( $options [ 'image_height' ], $ignore_crop ) ) ? false : true
);
if ( ! empty ( $image_atts ) ) {
// If there's no height or width, empty the array
if ( 9999 == $image_atts [ 'width' ] && 9999 == $image_atts [ 'height' ] ) {
$image_atts = array ();
}
}
2020-05-04 15:57:08 +00:00
if ( ! empty ( $image_atts ) && 'enable' == $options [ 'image_resize' ] ) {
return apply_filters ( 'post_thumbnail_html' ,
wp_get_attachment_image ( $image_id , array ( $image_atts [ 'width' ], $image_atts [ 'height' ], $image_atts [ 'crop' ] ), '' , array ( 'itemprop' => 'image' ) ),
get_the_ID (),
$image_id ,
apply_filters ( 'generate_page_header_default_size' , 'full' ),
''
);
2020-04-07 13:03:04 +00:00
} else {
return apply_filters ( 'post_thumbnail_html' ,
wp_get_attachment_image ( $image_id , apply_filters ( 'generate_page_header_default_size' , 'full' ), '' , array ( 'itemprop' => 'image' ) ),
get_the_ID (),
$image_id ,
apply_filters ( 'generate_page_header_default_size' , 'full' ),
''
);
}
}
if ( ! function_exists ( 'generate_combined_page_header_start' ) ) {
add_action ( 'generate_inside_merged_page_header' , 'generate_combined_page_header_start' , 0 );
/**
* Add our generate - combined - header class into the page header .
*
* This makes the header use position : absolute and places it on top
* of the content below it .
*/
function generate_combined_page_header_start () {
$options = generate_page_header_get_options ();
2020-08-13 14:53:39 +00:00
if ( ! $options ) {
return ;
}
2020-04-07 13:03:04 +00:00
if ( '' == $options [ 'merge' ] || '' == $options [ 'content' ] || '' == $options [ 'absolute' ] ) {
return ;
}
echo '<div class="generate-combined-header">' ;
}
}
if ( ! function_exists ( 'generate_combined_page_header_end' ) ) {
add_action ( 'generate_after_header' , 'generate_combined_page_header_end' , 9 );
/**
* End our g enerate - combined - header element
*/
function generate_combined_page_header_end () {
$options = generate_page_header_get_options ();
2020-08-13 14:53:39 +00:00
if ( ! $options ) {
return ;
}
2020-04-07 13:03:04 +00:00
if ( '' == $options [ 'merge' ] || '' == $options [ 'content' ] || '' == $options [ 'absolute' ] ) {
return ;
}
echo '</div><!-- .generate-combined-header -->' ;
}
}
if ( ! function_exists ( 'generate_page_header_enqueue' ) ) {
add_action ( 'wp_enqueue_scripts' , 'generate_page_header_enqueue' );
/**
* Add our scripts
*/
function generate_page_header_enqueue () {
$suffix = defined ( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min' ;
$options = generate_page_header_get_options ();
2020-08-13 14:53:39 +00:00
if ( ! $options ) {
return ;
}
2020-04-07 13:03:04 +00:00
if ( ! empty ( $options [ 'full_screen' ] ) && '' !== $options [ 'content' ] ) {
wp_enqueue_script ( 'generate-page-header-full-height' , plugin_dir_url ( __FILE__ ) . " js/full-height { $suffix } .js " , array ( 'jquery' ), GENERATE_PAGE_HEADER_VERSION , true );
}
if ( ! empty ( $options [ 'parallax' ] ) && '' !== $options [ 'content' ] ) {
wp_enqueue_script ( 'generate-page-header-parallax' , plugin_dir_url ( __FILE__ ) . " js/parallax { $suffix } .js " , array (), GENERATE_PAGE_HEADER_VERSION , true );
}
if ( ! empty ( $options [ 'background_video' ] ) && '' !== $options [ 'content' ] ) {
wp_enqueue_script ( 'generate-page-header-video' , plugin_dir_url ( __FILE__ ) . " js/jquery.vide.min.js " , array ( 'jquery' ), GENERATE_PAGE_HEADER_VERSION , true );
}
if ( ! empty ( $options [ 'content' ] ) ) {
wp_enqueue_style ( 'generate-page-header' , plugin_dir_url ( __FILE__ ) . " css/page-header { $suffix } .css " , array (), GENERATE_PAGE_HEADER_VERSION );
}
}
}
if ( ! function_exists ( 'generate_page_header_css' ) ) {
/**
* Generate the CSS in the < head > section using the Theme Customizer .
*
* @ since 0.1
*/
function generate_page_header_css () {
// Get our options
$options = generate_page_header_get_options ();
// If we don't have any content, we don't need any of the below
if ( empty ( $options [ 'content' ] ) ) {
return ;
}
// See if we have a video
$video = ( empty ( $options [ 'background_video' ] ) && empty ( $options [ 'background_video_ogv' ] ) && empty ( $options [ 'background_video_webm' ] ) ) ? false : true ;
// Figure out our background color
if ( '' !== $options [ 'background_video_overlay' ] && $options [ 'background_video' ] ) {
if ( substr ( $options [ 'background_video_overlay' ], 0 , 4 ) === " rgba " ) {
$background_color = $options [ 'background_video_overlay' ];
} else {
$background_color = generate_page_header_hex2rgba ( $options [ 'background_video_overlay' ], apply_filters ( 'generate_page_header_video_overlay' , 0.7 ) ) . ' !important' ;
}
} elseif ( ! empty ( $options [ 'background_color' ] ) && ! $video ) {
$background_color = $options [ 'background_color' ];
} else {
$background_color = null ;
}
// Get our image URL
$image_url = generate_page_header_get_image ( 'URL' );
// Check if we have a background image overlay
$background_overlay = ! empty ( $options [ 'background_image' ] ) && ! empty ( $background_color ) && ! empty ( $options [ 'background_overlay' ] ) ? true : false ;
$background_image = null ;
if ( ! empty ( $options [ 'background_image' ] ) && ! $background_overlay && false == $video ) {
$background_image = 'url(' . $image_url . ')' ;
}
if ( $background_overlay && ! $video ) {
$background_image = 'linear-gradient(0deg, ' . $background_color . ',' . $background_color . '), url(' . $image_url . ')' ;
}
// Initiate our CSS class
require_once GP_LIBRARY_DIRECTORY . 'class-make-css.php' ;
$css = new GeneratePress_Pro_CSS ;
// Page Header container
$css -> set_selector ( '.generate-content-header' );
if ( ! $background_overlay || $video ) {
$css -> add_property ( 'background-color' , esc_attr ( $background_color ) );
}
$css -> add_property ( 'background-image' , $background_image );
if ( ! empty ( $options [ 'parallax' ] ) ) {
$css -> add_property ( 'background-position' , 'center top' );
} else {
$css -> add_property ( 'background-position' , 'center center' );
}
// Merged header container
if ( '' !== $options [ 'merge' ] && ! empty ( $options [ 'full_screen' ] ) ) {
$css -> set_selector ( '.generate-combined-page-header' );
$css -> add_property ( 'height' , '100vh !important' );
}
// Remove the top margin from the container
if ( 'fluid' == $options [ 'container_type' ] || '' !== $options [ 'merge' ] ) {
$css -> set_selector ( '.separate-containers .generate-content-header.generate-page-header' );
$css -> add_property ( 'margin-top' , '0px' );
}
// Remove the content background color if an image or color is set
$css -> set_selector ( '.inside-page-header' );
if ( ! empty ( $options [ 'background_image' ] ) || ! empty ( $options [ 'background_color' ] ) ) {
$css -> add_property ( 'background-color' , 'transparent' );
}
$css -> add_property ( 'color' , esc_attr ( $options [ 'text_color' ] ) );
// Add the page header content atts
$css -> set_selector ( '.page-header-content-container' );
$css -> add_property ( 'text-align' , esc_attr ( $options [ 'alignment' ] ) );
if ( ! empty ( $options [ 'padding' ] ) ) {
$padding_unit = ( '%' == $options [ 'padding_unit' ] || 'percent' == $options [ 'padding_unit' ] ) ? '%' : 'px' ;
$css -> add_property ( 'padding-top' , absint ( $options [ 'padding' ] ) . $padding_unit );
$css -> add_property ( 'padding-bottom' , absint ( $options [ 'padding' ] ) . $padding_unit );
}
if ( isset ( $options [ 'x_padding_unit' ] ) && ! empty ( $options [ 'x_padding' ] ) ) {
$x_padding_unit = ( '%' == $options [ 'x_padding_unit' ] || 'percent' == $options [ 'x_padding_unit' ] ) ? '%' : 'px' ;
$css -> add_property ( 'padding-left' , absint ( $options [ 'x_padding' ] ) . $x_padding_unit );
$css -> add_property ( 'padding-right' , absint ( $options [ 'x_padding' ] ) . $x_padding_unit );
}
$css -> add_property ( 'color' , esc_attr ( $options [ 'text_color' ] ) );
// Set the content links
$css -> set_selector ( '.page-header-content-container a:not(.button), .page-header-content-container a:not(.button):visited' );
$css -> add_property ( 'color' , esc_attr ( $options [ 'link_color' ] ) );
$css -> set_selector ( '.page-header-content-container a:not(.button):hover, .page-header-content-container a:not(.button):active' );
$css -> add_property ( 'color' , esc_attr ( $options [ 'link_color_hover' ] ) );
// Headings
$css -> set_selector ( '.page-header-content-container h1, .page-header-content-container h2, .page-header-content-container h3, .page-header-content-container h4, .page-header-content-container h5' );
$css -> add_property ( 'color' , esc_attr ( $options [ 'text_color' ] ) );
// Set box-sizing if merged and contained
$css -> set_selector ( '.generate-merged-header .inside-header' );
if ( '' !== $options [ 'merge' ] && 'fluid' !== $options [ 'container_type' ] ) {
$css -> add_property ( '-moz-box-sizing' , 'border-box' );
$css -> add_property ( '-webkit-box-sizing' , 'border-box' );
$css -> add_property ( 'box-sizing' , 'border-box' );
}
// Remove the header background if we're merged
if ( '' !== $options [ 'merge' ] ) {
$css -> set_selector ( '.generate-merged-header .site-header' );
$css -> add_property ( 'background' , 'transparent' );
}
if ( '' !== $options [ 'custom_menu_colors' ] ) {
// The menu background color
$css -> set_selector ( '.generate-merged-header .main-navigation:not(.is_stuck):not(.toggled):not(.mobile-header-navigation)' );
$menu_background_color = ( '' == $options [ 'menu_background_color' ] ) ? 'transparent' : $options [ 'menu_background_color' ];
$css -> add_property ( 'background' , $menu_background_color );
// The menu item text color
$css -> set_selector ( '.generate-merged-header #site-navigation:not(.toggled) .main-nav > ul > li > a, .generate-merged-header #site-navigation:not(.toggled) .menu-toggle,.generate-merged-header #site-navigation:not(.toggled) .menu-toggle:hover,.generate-merged-header #site-navigation:not(.toggled) .menu-toggle:focus,.generate-merged-header #site-navigation:not(.toggled) .mobile-bar-items a, .generate-merged-header #site-navigation:not(.toggled) .mobile-bar-items a:hover, .generate-merged-header #site-navigation:not(.toggled) .mobile-bar-items a:focus' );
$css -> add_property ( 'color' , esc_attr ( $options [ 'menu_text_color' ] ) );
// The menu item hover background/text color
$css -> set_selector ( '.generate-merged-header #site-navigation:not(.toggled) .main-nav > ul > li:hover > a, .generate-merged-header #site-navigation:not(.toggled) .main-nav > ul > li:focus > a, .generate-merged-header #site-navigation:not(.toggled) .main-nav > ul > li.sfHover > a' );
if ( '' == $options [ 'menu_background_color_hover' ] ) {
$css -> add_property ( 'background' , $menu_background_color );
} else {
$css -> add_property ( 'background' , $options [ 'menu_background_color_hover' ] );
}
if ( '' !== $options [ 'menu_text_color_hover' ] ) {
$css -> add_property ( 'color' , esc_attr ( $options [ 'menu_text_color_hover' ] ) );
} else {
$css -> add_property ( 'color' , esc_attr ( $options [ 'menu_text_color' ] ) );
}
// The current menu item background/text color
$css -> set_selector ( '.generate-merged-header #site-navigation:not(.toggled) .main-nav > ul > li[class*="current-menu-"] > a, .generate-merged-header #site-navigation:not(.toggled) .main-nav > ul > li[class*="current-menu-"]:hover > a' );
if ( '' == $options [ 'menu_background_current' ] ) {
$css -> add_property ( 'background' , $menu_background_color );
} else {
$css -> add_property ( 'background' , $options [ 'menu_background_current' ] );
}
if ( '' !== $options [ 'menu_text_current' ] ) {
$css -> add_property ( 'color' , esc_attr ( $options [ 'menu_text_current' ] ) );
} else {
$css -> add_property ( 'color' , esc_attr ( $options [ 'menu_text_color' ] ) );
}
}
// The site title color
$css -> set_selector ( '.generate-merged-header .main-title a, .generate-merged-header .main-title a:hover, .generate-merged-header .main-title a:visited' );
$css -> add_property ( 'color' , esc_attr ( $options [ 'site_title_color' ] ) );
// The site tagline color
$css -> set_selector ( '.generate-merged-header .site-description' );
$css -> add_property ( 'color' , esc_attr ( $options [ 'site_tagline_color' ] ) );
return $css -> css_output ();
}
}
if ( ! function_exists ( 'generate_page_header_enqueue_scripts' ) ) {
add_action ( 'wp_enqueue_scripts' , 'generate_page_header_enqueue_scripts' , 100 );
/**
* Enqueue scripts and styles
*/
function generate_page_header_enqueue_scripts () {
wp_add_inline_style ( 'generate-style' , generate_page_header_css () );
}
}
add_filter ( 'generate_page_header_location' , 'generate_page_header_force_above_content' );
/**
* Forces the page header to be above the content / below the header if it ' s set
* to merge or full width .
*
* @ since 1.4
*/
function generate_page_header_force_above_content ( $location ) {
$options = generate_page_header_get_options ();
2020-08-13 14:53:39 +00:00
if ( ! $options ) {
return $location ;
}
2020-04-07 13:03:04 +00:00
if ( '' !== $options [ 'merge' ] && '' !== $options [ 'content' ] ) {
$location = 'above-content' ;
}
if ( 'fluid' == $options [ 'container_type' ] ) {
$location = 'above-content' ;
}
if ( get_post_meta ( get_the_ID (), '_generate_use_sections' , true ) ) {
$location = 'above-content' ;
}
return $location ;
}
if ( ! function_exists ( 'generate_page_header_combined' ) ) {
add_action ( 'generate_before_header' , 'generate_page_header_combined' , 5 );
/**
* Add the start to our page header containers if we ' re using a merged header
*
* Doing this allows us to actually wrap the header in our page header element
* instead of just making the header position : absolute .
*/
function generate_page_header_combined () {
// Get our options
$options = generate_page_header_get_options ();
2020-08-13 14:53:39 +00:00
if ( ! $options ) {
return ;
}
2020-04-07 13:03:04 +00:00
// Bail if merge isn't activated
if ( '' == $options [ 'merge' ] ) {
return ;
}
// Bail if we're on a single post and it's set to hide
if ( 'hide' == generate_get_page_header_location () ) {
return ;
}
generate_page_header_area_start_container ( 'page-header-image' , 'page-header-content' );
}
}
if ( ! function_exists ( 'generate_page_header' ) ) {
/**
* Add page header above content
*
* @ since 0.3
*/
function generate_page_header () {
$image_class = 'page-header-image' ;
$content_class = 'page-header-content' ;
if ( is_single () ) {
$image_class = 'page-header-image-single' ;
$content_class = 'page-header-content-single' ;
if ( 'below-title' == generate_get_page_header_location () ) {
$image_class = 'page-header-image-single page-header-below-title' ;
$content_class = 'page-header-content-single page-header-below-title' ;
}
}
generate_page_header_area ( $image_class , $content_class );
}
}
if ( ! function_exists ( 'generate_page_header_get_defaults' ) ) {
/**
* Set default options for the Customizer
*
* These are mainly for the Blog Page Header options .
*/
function generate_page_header_get_defaults () {
$generate_page_header_defaults = array (
'page_header_position' => 'above-content' ,
'post_header_position' => 'inside-content' ,
'page_header_image' => '' ,
'page_header_logo' => '' ,
'page_header_navigation_logo' => '' ,
'page_header_url' => '' ,
'page_header_hard_crop' => 'disable' ,
'page_header_image_width' => '1200' ,
'page_header_image_height' => '0' ,
'page_header_content' => '' ,
'page_header_add_paragraphs' => '0' ,
'page_header_add_padding' => '0' ,
'page_header_image_background' => '0' ,
'page_header_add_parallax' => '0' ,
'page_header_full_screen' => '0' ,
'page_header_vertical_center' => '0' ,
'page_header_container_type' => '' ,
'page_header_text_alignment' => 'left' ,
'page_header_padding' => '' ,
'page_header_padding_unit' => '' ,
'page_header_background_color' => '' ,
'page_header_text_color' => '' ,
'page_header_link_color' => '' ,
'page_header_link_color_hover' => '' ,
'page_header_video' => '' ,
'page_header_video_ogv' => '' ,
'page_header_video_webm' => '' ,
'page_header_video_overlay' => '' ,
'page_header_combine' => '' ,
'page_header_absolute_position' => '' ,
'page_header_site_title' => '' ,
'page_header_site_tagline' => '' ,
'page_header_transparent_navigation' => '' ,
'page_header_navigation_text' => '' ,
'page_header_navigation_background_hover' => '' ,
'page_header_navigation_text_hover' => '' ,
'page_header_navigation_background_current' => '' ,
'page_header_navigation_text_current' => ''
);
return apply_filters ( 'generate_page_header_option_defaults' , $generate_page_header_defaults );
}
}
if ( ! function_exists ( 'generate_page_header_customize_register' ) ) {
add_action ( 'customize_register' , 'generate_page_header_customize_register' , 100 );
/**
* Add our page header layout Customizer settings .
* Would like to revamp these .
*/
function generate_page_header_customize_register ( $wp_customize ) {
// Get our defaults
$defaults = generate_page_header_get_defaults ();
// Get our Customizer helpers
require_once GP_LIBRARY_DIRECTORY . 'customizer-helpers.php' ;
// Use the Layout panel in the free theme if it exists
if ( $wp_customize -> get_panel ( 'generate_layout_panel' ) ) {
$section = 'generate_layout_page_header' ;
$wp_customize -> add_section (
'generate_layout_page_header' ,
array (
'title' => __ ( 'Page Header' , 'gp-premium' ),
'capability' => 'edit_theme_options' ,
'priority' => 35 ,
'panel' => 'generate_layout_panel'
)
);
} else {
$section = 'layout_section' ;
}
$wp_customize -> add_setting (
'generate_page_header_settings[page_header_position]' ,
array (
'default' => $defaults [ 'page_header_position' ],
'type' => 'option' ,
'sanitize_callback' => 'generate_premium_sanitize_choices'
)
);
// Location
$wp_customize -> add_control (
'generate_page_header_settings[page_header_position]' ,
array (
'type' => 'select' ,
'label' => __ ( 'Page Header Location' , 'gp-premium' ),
'section' => $section ,
'choices' => array (
'above-content' => __ ( 'Above Content Area' , 'gp-premium' ),
'inside-content' => __ ( 'Inside Content Area' , 'gp-premium' )
),
'settings' => 'generate_page_header_settings[page_header_position]' ,
'priority' => 100
)
);
$wp_customize -> add_setting (
'generate_page_header_settings[post_header_position]' ,
array (
'default' => $defaults [ 'post_header_position' ],
'type' => 'option' ,
'sanitize_callback' => 'generate_premium_sanitize_choices'
)
);
// Single post header location
$wp_customize -> add_control (
'generate_page_header_settings[post_header_position]' ,
array (
'type' => 'select' ,
'label' => __ ( 'Single Post Header Location' , 'gp-premium' ),
'section' => $section ,
'choices' => array (
'above-content' => __ ( 'Above Content Area' , 'gp-premium' ),
'inside-content' => __ ( 'Inside Content Area' , 'gp-premium' ),
'below-title' => __ ( 'Below Post Title' , 'gp-premium' ),
'hide' => __ ( 'Hide' , 'gp-premium' )
),
'settings' => 'generate_page_header_settings[post_header_position]' ,
'priority' => 101
)
);
}
}
if ( ! function_exists ( 'generate_get_attachment_id_by_url' ) ) {
/**
* Return an ID of an attachment by searching the database with the file URL .
*
* First checks to see if the $url is pointing to a file that exists in
* the wp - content directory . If so , then we search the database for a
* partial match consisting of the remaining path AFTER the wp - content
* directory . Finally , if a match is found the attachment ID will be
* returned .
*
* @ param string $url The URL of the image ( ex : http :// mysite . com / wp - content / uploads / 2013 / 05 / test - image . jpg )
*
* @ return int | null $attachment Returns an attachment ID , or null if no attachment is found
*/
function generate_get_attachment_id_by_url ( $attachment_url = '' ) {
global $wpdb ;
$attachment_id = false ;
// If there is no url, return.
if ( '' == $attachment_url ) {
return ;
}
// Get the upload directory paths
$upload_dir_paths = wp_upload_dir ();
// Make sure the upload path base directory exists in the attachment URL, to verify that we're working with a media library image
if ( false !== strpos ( $attachment_url , $upload_dir_paths [ 'baseurl' ] ) ) {
// If this is the URL of an auto-generated thumbnail, get the URL of the original image
$attachment_url = preg_replace ( '/-\d+x\d+(?=\.(jpg|jpeg|png|gif)$)/i' , '' , $attachment_url );
// Remove the upload path base directory from the attachment URL
$attachment_url = str_replace ( $upload_dir_paths [ 'baseurl' ] . '/' , '' , $attachment_url );
// Finally, run a custom database query to get the attachment ID from the modified attachment URL
$attachment_id = $wpdb -> get_var ( $wpdb -> prepare ( " SELECT wposts.ID FROM $wpdb->posts wposts, $wpdb->postmeta wpostmeta WHERE wposts.ID = wpostmeta.post_id AND wpostmeta.meta_key = '_wp_attached_file' AND wpostmeta.meta_value = '%s' AND wposts.post_type = 'attachment' " , $attachment_url ) );
}
return $attachment_id ;
}
}
if ( ! function_exists ( 'generate_page_header_hex2rgba' ) ) {
/**
* Convert hex to RGBA
*/
function generate_page_header_hex2rgba ( $color , $opacity = false ) {
$default = 'rgb(0,0,0)' ;
// Return default if no color provided
if ( empty ( $color ) ) {
return $default ;
}
// Sanitize $color if "#" is provided
if ( $color [ 0 ] == '#' ) {
$color = substr ( $color , 1 );
}
// Check if color has 6 or 3 characters and get values
if ( strlen ( $color ) == 6 ) {
$hex = array ( $color [ 0 ] . $color [ 1 ], $color [ 2 ] . $color [ 3 ], $color [ 4 ] . $color [ 5 ] );
} elseif ( strlen ( $color ) == 3 ) {
$hex = array ( $color [ 0 ] . $color [ 0 ], $color [ 1 ] . $color [ 1 ], $color [ 2 ] . $color [ 2 ] );
} else {
return $default ;
}
// Convert hexadec to rgb
$rgb = array_map ( 'hexdec' , $hex );
// Check if opacity is set(rgba or rgb)
if ( $opacity ) {
if ( abs ( $opacity ) > 1 ) {
$opacity = 1.0 ;
}
$output = 'rgba(' . implode ( " , " , $rgb ) . ',' . $opacity . ')' ;
} else {
$output = 'rgb(' . implode ( " , " , $rgb ) . ')' ;
}
//Return rgb(a) color string
return $output ;
}
}
if ( ! function_exists ( 'generate_page_header_replace_logo' ) ) {
/**
* Check to see if we should replace our logo
* Utlilised in generate_page_header_setup ()
*/
function generate_page_header_replace_logo ( $logo ) {
if ( generate_page_header_logo_exists () ) {
$options = generate_page_header_get_options ();
2020-08-13 14:53:39 +00:00
if ( ! $options ) {
return $logo ;
}
2020-04-07 13:03:04 +00:00
return $options [ 'logo_url' ];
}
return $logo ;
}
}
if ( ! function_exists ( 'generate_page_header_replace_navigation_logo' ) ) {
/**
* Check to see if we should replace our navigation logo
* Utlilised in generate_page_header_setup ()
*/
function generate_page_header_replace_navigation_logo ( $logo ) {
if ( generate_page_header_navigation_logo_exists () ) {
$options = generate_page_header_get_options ();
2020-08-13 14:53:39 +00:00
if ( ! $options ) {
return $logo ;
}
2020-04-07 13:03:04 +00:00
return $options [ 'navigation_logo_url' ];
}
return $logo ;
}
}
if ( ! function_exists ( 'generate_page_header_logo_exists' ) ) {
/**
* This is an active_callback
* Check if our page header logo exists
*/
function generate_page_header_logo_exists () {
if ( function_exists ( 'generate_get_defaults' ) ) {
$generate_settings = wp_parse_args (
get_option ( 'generate_settings' , array () ),
generate_get_defaults ()
);
}
if ( function_exists ( 'generate_construct_logo' ) && ( '' !== $generate_settings [ 'logo' ] || get_theme_mod ( 'custom_logo' ) ) ) {
return true ;
}
return false ;
}
}
if ( ! function_exists ( 'generate_page_header_navigation_logo_exists' ) ) {
/**
* This is an active_callback
* Check if our page header logo exists
*/
function generate_page_header_navigation_logo_exists () {
if ( function_exists ( 'generate_menu_plus_get_defaults' ) ) {
$generate_menu_plus_settings = wp_parse_args (
get_option ( 'generate_menu_plus_settings' , array () ),
generate_menu_plus_get_defaults ()
);
if ( '' !== $generate_menu_plus_settings [ 'sticky_menu_logo' ] ) {
return true ;
}
}
return false ;
}
}
/**
* Gets our set page header location and filters it .
*
* @ since 1.4
*/
function generate_get_page_header_location () {
$generate_page_header_settings = wp_parse_args (
get_option ( 'generate_page_header_settings' , array () ),
generate_page_header_get_defaults ()
);
$location = $generate_page_header_settings [ 'page_header_position' ];
if ( is_single () ) {
$location = $generate_page_header_settings [ 'post_header_position' ];
}
return apply_filters ( 'generate_page_header_location' , $location );
}
/**
* Searches for template tags in the content and replaces them with
* their respective functions .
*
* @ since 1.4
*
* @ param $content The content to look through .
* @ return string The resulting content .
*/
function generate_page_header_template_tags ( $content ) {
$search = array ();
$replace = array ();
$search [] = '{{post_title}}' ;
if ( is_singular () ) {
$replace [] = get_the_title ();
} elseif ( is_tax () || is_category () || is_tag () ) {
$replace [] = get_queried_object () -> name ;
}
if ( is_singular () ) {
// Date
$time_string = '<time class="entry-date published" datetime="%1$s" itemprop="datePublished">%2$s</time>' ;
if ( get_the_time ( 'U' ) !== get_the_modified_time ( 'U' ) ) {
$time_string .= '<time class="updated" datetime="%3$s" itemprop="dateModified" style="display:none;">%4$s</time>' ;
}
$time_string = sprintf ( $time_string ,
esc_attr ( get_the_date ( 'c' ) ),
esc_html ( get_the_date () ),
esc_attr ( get_the_modified_date ( 'c' ) ),
esc_html ( get_the_modified_date () )
);
$date = sprintf ( '<a href="%1$s" title="%2$s" rel="bookmark">%3$s</a>' ,
esc_url ( get_permalink () ),
esc_attr ( get_the_time () ),
$time_string
);
$search [] = '{{post_date}}' ;
$replace [] = $date ;
// Author
global $post ;
$author_id = $post -> post_author ;
$author = sprintf ( '<span class="author vcard" itemtype="http://schema.org/Person" itemscope="itemscope" itemprop="author"><a class="url fn n" href="%1$s" title="%2$s" rel="author" itemprop="url"><span class="author-name" itemprop="name">%3$s</span></a></span>' ,
esc_url ( get_author_posts_url ( $author_id ) ),
esc_attr ( sprintf ( __ ( 'View all posts by %s' , 'gp-premium' ), get_the_author_meta ( 'display_name' , $author_id ) ) ),
esc_html ( get_the_author_meta ( 'display_name' , $author_id ) )
);
$search [] = '{{post_author}}' ;
$replace [] = $author ;
// Post terms
if ( strpos ( $content , '{{post_terms' ) !== false ) {
$data = preg_match_all ( '/{{post_terms.([^}]*)}}/' , $content , $matches );
foreach ( $matches [ 1 ] as $match ) {
$search [] = '{{post_terms.' . $match . '}}' ;
$replace [] = get_the_term_list ( get_the_ID (), $match , apply_filters ( 'generate_page_header_terms_before' , '' ), apply_filters ( 'generate_page_header_terms_separator' , ', ' ), apply_filters ( 'generate_page_header_terms_after' , '' ) );
}
}
// Custom field
if ( strpos ( $content , '{{custom_field' ) !== false ) {
$data = preg_match_all ( '/{{custom_field.([^}]*)}}/' , $content , $matches );
foreach ( $matches [ 1 ] as $match ) {
if ( null !== get_post_meta ( get_the_ID (), $match , true ) && '_thumbnail_id' !== $match ) {
$search [] = '{{custom_field.' . $match . '}}' ;
$replace [] = get_post_meta ( get_the_ID (), $match , true );
}
}
$thumbnail_id = get_post_meta ( get_the_ID (), '_thumbnail_id' , true );
if ( null !== $thumbnail_id ) {
$search [] = '{{custom_field._thumbnail_id}}' ;
$replace [] = wp_get_attachment_image ( $thumbnail_id , apply_filters ( 'generate_page_header_thumbnail_id_size' , 'medium' ) );
}
}
}
// Taxonomy description
if ( is_tax () || is_category () || is_tag () ) {
if ( strpos ( $content , '{{custom_field' ) !== false ) {
$search [] = '{{custom_field.description}}' ;
$replace [] = term_description ( get_queried_object () -> term_id , get_queried_object () -> taxonomy );
}
}
return str_replace ( $search , $replace , $content );
}
/**
* When the post title , author or date are in the Page Header , they appear outside of the
* hentry element . This causes errors in Google Search Console .
*
* @ since 1.7
*
* @ param array $classes
* @ return array
*/
function generate_page_header_remove_hentry ( $classes ) {
$classes = array_diff ( $classes , array ( 'hentry' ) );
return $classes ;
}
add_action ( 'admin_init' , 'generate_page_header_transfer_blog_header' );
/**
* Transfers any blog page header settings from the Customizer into a new page header .
*
* @ since 1.4
*/
function generate_page_header_transfer_blog_header () {
// Get our migration settings
$migration_settings = get_option ( 'generate_migration_settings' , array () );
// If we've already ran this function, bail
if ( isset ( $migration_settings [ 'blog_page_header' ] ) && 'true' == $migration_settings [ 'blog_page_header' ] ) {
return ;
}
$settings = wp_parse_args (
get_option ( 'generate_page_header_options' , array () ),
generate_page_header_get_defaults ()
);
$defaults = generate_page_header_get_defaults ();
if ( '' !== $settings [ 'page_header_image' ] ) {
if ( function_exists ( 'attachment_url_to_postid' ) ) {
$image = attachment_url_to_postid ( esc_url ( $settings [ 'page_header_image' ] ) );
}
}
if ( ! isset ( $image ) ) {
$image = $settings [ 'page_header_image' ];
}
$meta = array (
'_thumbnail_id' => is_int ( $image ) ? $image : '' ,
'_meta-generate-page-header-image' => ! is_int ( $image ) ? $settings [ 'page_header_image' ] : '' ,
'_meta-generate-page-header-image-id' => '' ,
'_meta-generate-page-header-image-link' => $settings [ 'page_header_url' ],
'_meta-generate-page-header-enable-image-crop' => 'disable' == $settings [ 'page_header_hard_crop' ] ? '' : $settings [ 'page_header_hard_crop' ],
'_meta-generate-page-header-image-width' => ! $image || '' == $image ? '' : $settings [ 'page_header_image_width' ],
'_meta-generate-page-header-image-height' => ! $image || '' == $image ? '' : $settings [ 'page_header_image_height' ],
'_meta-generate-page-header-content' => $settings [ 'page_header_content' ],
'_meta-generate-page-header-content-autop' => $settings [ 'page_header_add_paragraphs' ] ? 'yes' : '' ,
'_meta-generate-page-header-content-padding' => $settings [ 'page_header_add_padding' ] ? 'yes' : '' ,
'_meta-generate-page-header-image-background' => $settings [ 'page_header_image_background' ] ? 'yes' : '' ,
'_meta-generate-page-header-image-background-type' => $settings [ 'page_header_container_type' ],
'_meta-generate-page-header-image-background-fixed' => $settings [ 'page_header_add_parallax' ] ? 'yes' : '' ,
'_meta-generate-page-header-full-screen' => $settings [ 'page_header_full_screen' ] ? 'yes' : '' ,
'_meta-generate-page-header-vertical-center' => $settings [ 'page_header_vertical_center' ] ? 'yes' : '' ,
'_meta-generate-page-header-image-background-alignment' => 'left' == $settings [ 'page_header_text_alignment' ] ? '' : $settings [ 'page_header_text_alignment' ],
'_meta-generate-page-header-image-background-spacing' => $settings [ 'page_header_padding' ],
'_meta-generate-page-header-image-background-spacing-unit' => 'percent' == $settings [ 'page_header_padding_unit' ] ? '%' : '' ,
'_meta-generate-page-header-image-background-text-color' => $settings [ 'page_header_text_color' ],
'_meta-generate-page-header-image-background-color' => $settings [ 'page_header_background_color' ],
'_meta-generate-page-header-image-background-link-color' => $settings [ 'page_header_link_color' ],
'_meta-generate-page-header-image-background-link-color-hover' => $settings [ 'page_header_link_color_hover' ],
'_meta-generate-page-header-combine' => $settings [ 'page_header_combine' ] ? 'yes' : '' ,
'_meta-generate-page-header-absolute-position' => $settings [ 'page_header_absolute_position' ] ? 'yes' : '' ,
'_meta-generate-page-header-transparent-navigation' => $settings [ 'page_header_transparent_navigation' ] ? 'yes' : '' ,
'_meta-generate-page-header-navigation-text' => $settings [ 'page_header_navigation_text' ],
'_meta-generate-page-header-site-title' => $settings [ 'page_header_site_title' ],
'_meta-generate-page-header-site-tagline' => $settings [ 'page_header_site_tagline' ],
'_meta-generate-page-header-navigation-background-hover' => $settings [ 'page_header_navigation_background_hover' ],
'_meta-generate-page-header-navigation-text-hover' => $settings [ 'page_header_navigation_text_hover' ],
'_meta-generate-page-header-navigation-background-current' => $settings [ 'page_header_navigation_background_current' ],
'_meta-generate-page-header-navigation-text-current' => $settings [ 'page_header_navigation_text_current' ],
'_meta-generate-page-header-video' => $settings [ 'page_header_video' ],
'_meta-generate-page-header-video-ogv' => $settings [ 'page_header_video_ogv' ],
'_meta-generate-page-header-video-webm' => $settings [ 'page_header_video_webm' ],
'_meta-generate-page-header-video-overlay' => $settings [ 'page_header_video_overlay' ],
'_meta-generate-page-header-logo' => $settings [ 'page_header_logo' ],
'_meta-generate-page-header-logo-id' => '' ,
'_meta-generate-page-header-navigation-logo' => $settings [ 'page_header_navigation_logo' ],
'_meta-generate-page-header-navigation-logo-id' => '' ,
);
// Strip empty values (but keep 0s)
$meta = array_filter ( $meta , 'strlen' );
if ( empty ( $meta ) ) {
return ;
}
$blog_page_header = array (
'post_title' => 'Blog Page Header' ,
'post_type' => 'generate_page_header' ,
'post_status' => 'publish' ,
'meta_input' => $meta
);
$page_exists = get_page_by_title ( 'Blog Page Header' , 'OBJECT' , 'generate_page_header' );
if ( null == $page_exists ) {
wp_insert_post ( $blog_page_header );
$page_exists = get_page_by_title ( 'Blog Page Header' , 'OBJECT' , 'generate_page_header' );
// If we've created our page header, and content or an image exists
if ( $page_exists ) {
$global_locations = wp_parse_args ( get_option ( 'generate_page_header_global_locations' , array () ), '' );
$new_blog_page_header = array ();
$new_blog_page_header [ 'blog' ] = $page_exists -> ID ;
$new_blog_page_header_settings = wp_parse_args ( $new_blog_page_header , $global_locations );
update_option ( 'generate_page_header_global_locations' , $new_blog_page_header_settings );
//delete_option( 'generate_page_header_options' );
}
}
// Update our migration option so we don't need to run this again
$updated = array ();
$updated [ 'blog_page_header' ] = 'true' ;
$new_migration_settings = wp_parse_args ( $updated , $migration_settings );
update_option ( 'generate_migration_settings' , $new_migration_settings );
}