__( 'Primary Menu', 'generatepress' ),
) );
/**
* Enable support for Post Formats
*/
add_theme_support( 'post-formats', array( 'aside', 'image', 'video', 'quote', 'link', 'status' ) );
/**
* Enable support for WooCommerce
*/
add_theme_support( 'woocommerce' );
/**
* Enable support for
tag
*/
add_theme_support( 'title-tag' );
/*
* Add HTML5 theme support
*/
add_theme_support( 'html5', array(
'search-form', 'comment-form', 'comment-list', 'gallery', 'caption'
) );
/*
* Add Logo support
*/
add_theme_support( 'custom-logo', array(
'height' => 70,
'width' => 350,
'flex-height' => true,
'flex-width' => true,
) );
/*
* Indicate widget sidebars can use selective refresh in the Customizer.
*/
add_theme_support( 'customize-selective-refresh-widgets' );
/**
* Set the content width to something large
* We set a more accurate width in generate_smart_content_width()
*/
global $content_width;
if ( ! isset( $content_width ) )
$content_width = 1200; /* pixels */
/*
* This theme styles the visual editor to resemble the theme style
*/
add_editor_style( 'inc/css/editor-style.css' );
}
endif; // generate_setup
if ( ! function_exists( 'generate_get_defaults' ) ) :
/**
* Set default options
*/
function generate_get_defaults()
{
$generate_defaults = array(
'hide_title' => '',
'hide_tagline' => '',
'logo' => '',
'container_width' => '1100',
'header_layout_setting' => 'fluid-header',
'nav_alignment_setting' => ( is_rtl() ) ? 'right' : 'left',
'header_alignment_setting' => ( is_rtl() ) ? 'right' : 'left',
'nav_layout_setting' => 'fluid-nav',
'nav_position_setting' => 'nav-below-header',
'nav_dropdown_type' => 'hover',
'nav_search' => 'disable',
'content_layout_setting' => 'separate-containers',
'layout_setting' => 'right-sidebar',
'blog_layout_setting' => 'right-sidebar',
'single_layout_setting' => 'right-sidebar',
'post_content' => 'full',
'footer_layout_setting' => 'fluid-footer',
'footer_widget_setting' => '3',
'back_to_top' => '',
'background_color' => '#efefef',
'text_color' => '#3a3a3a',
'link_color' => '#1e73be',
'link_color_hover' => '#000000',
'link_color_visited' => '',
);
return apply_filters( 'generate_option_defaults', $generate_defaults );
}
endif;
if ( ! function_exists( 'generate_widgets_init' ) ) :
/**
* Register widgetized area and update sidebar with default widgets
*/
add_action( 'widgets_init', 'generate_widgets_init' );
function generate_widgets_init()
{
// Set up our array of widgets
$widgets = array(
__( 'Right Sidebar', 'generatepress' ) => 'sidebar-1',
__( 'Left Sidebar', 'generatepress' ) => 'sidebar-2',
__( 'Header', 'generatepress' ) => 'header',
__( 'Footer Widget 1', 'generatepress' ) => 'footer-1',
__( 'Footer Widget 2', 'generatepress' ) => 'footer-2',
__( 'Footer Widget 3', 'generatepress' ) => 'footer-3',
__( 'Footer Widget 4', 'generatepress' ) => 'footer-4',
__( 'Footer Widget 5', 'generatepress' ) => 'footer-5'
);
// Loop through them to create our widget areas
foreach ( $widgets as $widget => $id ) {
register_sidebar( array(
'name' => $widget,
'id' => $id,
'before_widget' => '',
'before_title' => apply_filters( 'generate_start_widget_title', '' ),
) );
}
}
endif;
/**
* Custom template tags for this theme.
*/
require get_template_directory() . '/inc/template-tags.php';
/**
* Custom functions that act independently of the theme templates.
*/
require get_template_directory() . '/inc/extras.php';
/**
* Build the navigation
*/
require get_template_directory() . '/inc/navigation.php';
/**
* Customizer additions.
*/
require get_template_directory() . '/inc/customizer.php';
/**
* Load element classes
*/
require get_template_directory() . '/inc/element-classes.php';
/**
* Load metaboxes
*/
require get_template_directory() . '/inc/metaboxes.php';
/**
* Load options
*/
require get_template_directory() . '/inc/options.php';
/**
* Load add-on options
*/
require get_template_directory() . '/inc/add-ons.php';
/**
* Load WooCommerce compatibility
*/
require get_template_directory() . '/inc/woocommerce.php';
if ( ! function_exists( 'generate_get_min_suffix' ) ) :
/**
* Figure out if we should use minified scripts or not
* @since 1.3.29
*/
function generate_get_min_suffix()
{
return defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min';
}
endif;
if ( ! function_exists( 'generate_scripts' ) ) :
/**
* Enqueue scripts and styles
*/
add_action( 'wp_enqueue_scripts', 'generate_scripts' );
function generate_scripts()
{
// Get our options.
$generate_settings = wp_parse_args(
get_option( 'generate_settings', array() ),
generate_get_defaults()
);
// Get the minified suffix.
$suffix = generate_get_min_suffix();
// Enqueue our CSS.
wp_enqueue_style( 'generate-style-grid', get_template_directory_uri() . "/css/unsemantic-grid{$suffix}.css", false, GENERATE_VERSION, 'all' );
wp_enqueue_style( 'generate-style', get_template_directory_uri() . '/style.css', array( 'generate-style-grid' ), GENERATE_VERSION, 'all' );
wp_enqueue_style( 'generate-mobile-style', get_template_directory_uri() . "/css/mobile{$suffix}.css", array( 'generate-style' ), GENERATE_VERSION, 'all' );
wp_add_inline_style( 'generate-style', generate_base_css() );
// Add the child theme CSS if child theme is active.
if ( is_child_theme() )
wp_enqueue_style( 'generate-child', get_stylesheet_uri(), true, filemtime( get_stylesheet_directory() . '/style.css' ), 'all' );
// Font Awesome
$icon_essentials = apply_filters( 'generate_fontawesome_essentials', false );
$icon_essentials = ( $icon_essentials ) ? '-essentials' : false;
wp_enqueue_style( "fontawesome{$icon_essentials}", get_template_directory_uri() . "/css/font-awesome{$icon_essentials}{$suffix}.css", false, '4.6.3', 'all' );
// IE 8
wp_enqueue_style( 'generate-ie', get_template_directory_uri() . "/css/ie{$suffix}.css", array( 'generate-style-grid' ), GENERATE_VERSION, 'all' );
wp_style_add_data( 'generate-ie', 'conditional', 'lt IE 9' );
// Add jQuery
wp_enqueue_script( 'jquery' );
// Add our mobile navigation
wp_enqueue_script( 'generate-navigation', get_template_directory_uri() . "/js/navigation{$suffix}.js", array( 'jquery' ), GENERATE_VERSION, true );
// Add our hover or click dropdown menu scripts
if ( 'click' == $generate_settings[ 'nav_dropdown_type' ] || 'click-arrow' == $generate_settings[ 'nav_dropdown_type' ] ) {
wp_enqueue_script( 'generate-dropdown-click', get_template_directory_uri() . "/js/dropdown-click{$suffix}.js", array( 'jquery' ), GENERATE_VERSION, true );
} else {
wp_enqueue_script( 'generate-dropdown', get_template_directory_uri() . "/js/dropdown{$suffix}.js", array( 'jquery' ), GENERATE_VERSION, true );
}
// Add our navigation search if it's enabled
if ( 'enable' == $generate_settings['nav_search'] ) {
wp_enqueue_script( 'generate-navigation-search', get_template_directory_uri() . "/js/navigation-search{$suffix}.js", array( 'jquery' ), GENERATE_VERSION, true );
}
// Add the back to top script if it's enabled
if ( 'enable' == $generate_settings['back_to_top'] ) {
wp_enqueue_script( 'generate-back-to-top', get_template_directory_uri() . "/js/back-to-top{$suffix}.js", array( 'jquery' ), GENERATE_VERSION, true );
}
// Move the navigation from below the content on mobile to below the header if it's in a sidebar
if ( 'nav-left-sidebar' == $generate_settings['nav_position_setting'] || 'nav-right-sidebar' == $generate_settings['nav_position_setting'] ) {
wp_enqueue_script( 'generate-move-navigation', get_template_directory_uri() . "/js/move-navigation{$suffix}.js", array( 'jquery' ), GENERATE_VERSION, true );
}
// IE 8
if ( function_exists( 'wp_script_add_data' ) ) :
wp_enqueue_script( 'generate-html5', get_template_directory_uri() . "/js/html5shiv{$suffix}.js", array( 'jquery' ), GENERATE_VERSION, true );
wp_script_add_data( 'generate-html5', 'conditional', 'lt IE 9' );
endif;
// Add the threaded comments script
if ( is_singular() && comments_open() && get_option( 'thread_comments' ) ) {
wp_enqueue_script( 'comment-reply' );
}
}
endif;
if ( ! function_exists( 'generate_get_layout' ) ) :
/**
* Get the layout for the current page
*/
function generate_get_layout()
{
// Get current post
global $post;
// Get Customizer options
$generate_settings = wp_parse_args(
get_option( 'generate_settings', array() ),
generate_get_defaults()
);
// Set up the layout variable for pages
$layout = $generate_settings['layout_setting'];
// Get the individual page/post sidebar metabox value
$layout_meta = ( isset( $post ) ) ? get_post_meta( $post->ID, '_generate-sidebar-layout-meta', true ) : '';
// Set up BuddyPress variable
$buddypress = false;
if ( function_exists( 'is_buddypress' ) ) :
$buddypress = ( is_buddypress() ) ? true : false;
endif;
// If we're on the single post page
// And if we're not on a BuddyPress page - fixes a bug where BP thinks is_single() is true
if ( is_single() && ! $buddypress ) :
$layout = null;
$layout = $generate_settings['single_layout_setting'];
endif;
// If the metabox is set, use it instead of the global settings
if ( '' !== $layout_meta && false !== $layout_meta ) :
$layout = $layout_meta;
endif;
// If we're on the blog, archive, attachment etc..
if ( is_home() || is_archive() || is_search() || is_attachment() || is_tax() ) :
$layout = null;
$layout = $generate_settings['blog_layout_setting'];
endif;
// Finally, return the layout
return apply_filters( 'generate_sidebar_layout', $layout );
}
endif;
if ( ! function_exists( 'generate_get_footer_widgets' ) ) :
/**
* Get the footer widgets for the current page
*/
function generate_get_footer_widgets()
{
// Get current post
global $post;
// Get Customizer options
$generate_settings = wp_parse_args(
get_option( 'generate_settings', array() ),
generate_get_defaults()
);
// Set up the footer widget variable
$widgets = $generate_settings['footer_widget_setting'];
// Get the individual footer widget metabox value
$widgets_meta = ( isset( $post ) ) ? get_post_meta( $post->ID, '_generate-footer-widget-meta', true ) : '';
// If we're not on a single page or post, the metabox hasn't been set
if ( ! is_singular() ) :
$widgets_meta = '';
endif;
// If we have a metabox option set, use it
if ( '' !== $widgets_meta && false !== $widgets_meta ) :
$widgets = $widgets_meta;
endif;
// Finally, return the layout
return apply_filters( 'generate_footer_widgets', $widgets );
}
endif;
if ( ! function_exists( 'generate_construct_sidebars' ) ) :
/**
* Construct the sidebars
* @since 0.1
*/
add_action('generate_sidebars','generate_construct_sidebars');
function generate_construct_sidebars()
{
// Get the layout
$layout = generate_get_layout();
// When to show the right sidebar
$rs = array('right-sidebar','both-sidebars','both-right','both-left');
// When to show the left sidebar
$ls = array('left-sidebar','both-sidebars','both-right','both-left');
// If left sidebar, show it
if ( in_array( $layout, $ls ) ) :
get_sidebar('left');
endif;
// If right sidebar, show it
if ( in_array( $layout, $rs ) ) :
get_sidebar();
endif;
}
endif;
if ( ! function_exists( 'generate_add_footer_info' ) ) :
add_action('generate_credits','generate_add_footer_info');
function generate_add_footer_info()
{
?>
©
· GeneratePress
section using the Theme Customizer
* @since 0.1
*/
function generate_base_css()
{
$generate_settings = wp_parse_args(
get_option( 'generate_settings', array() ),
generate_get_defaults()
);
// Start the magic
$visual_css = array (
// Body CSS
'body' => array(
'background-color' => $generate_settings['background_color'],
'color' => $generate_settings['text_color']
),
// Link CSS
'a, a:visited' => array(
'color' => $generate_settings['link_color'],
'text-decoration' => 'none'
),
// Visited link color if specified
'a:visited' => array(
'color' => ( !empty( $generate_settings['link_color_visited'] ) ) ? $generate_settings['link_color_visited'] : null,
),
// Link hover
'a:hover, a:focus, a:active' => array(
'color' => $generate_settings['link_color_hover'],
'text-decoration' => null
),
// Grid container
'body .grid-container' => array(
'max-width' => $generate_settings['container_width'] . 'px'
)
);
// Output the above CSS
$output = '';
foreach($visual_css as $k => $properties) {
if(!count($properties))
continue;
$temporary_output = $k . ' {';
$elements_added = 0;
foreach($properties as $p => $v) {
if(empty($v))
continue;
$elements_added++;
$temporary_output .= $p . ': ' . $v . '; ';
}
$temporary_output .= "}";
if($elements_added > 0)
$output .= $temporary_output;
}
$output = str_replace(array("\r", "\n"), '', $output);
return $output;
}
endif;
if ( ! function_exists( 'generate_add_viewport' ) ) :
/**
* Add viewport to wp_head
* @since 1.1.0
*/
add_action('wp_head','generate_add_viewport');
function generate_add_viewport()
{
echo '';
}
endif;
if ( ! function_exists( 'generate_ie_compatibility' ) ) :
/**
* Add compatibility for IE8 and lower
* No need to run this if wp_script_add_data() exists
* @since 1.1.9
*/
add_action('wp_footer','generate_ie_compatibility');
function generate_ie_compatibility()
{
if ( function_exists( 'wp_script_add_data' ) )
return;
$suffix = generate_get_min_suffix();
?>
element
* @since 1.3.15
*/
function generate_body_schema()
{
// Set up blog variable
$blog = ( is_home() || is_archive() || is_attachment() || is_tax() || is_single() ) ? true : false;
// Set up default itemtype
$itemtype = 'WebPage';
// Get itemtype for the blog
$itemtype = ( $blog ) ? 'Blog' : $itemtype;
// Get itemtype for search results
$itemtype = ( is_search() ) ? 'SearchResultsPage' : $itemtype;
// Get the result
$result = apply_filters( 'generate_body_itemtype', $itemtype );
// Return our HTML
echo "itemtype='http://schema.org/$result' itemscope='itemscope'";
}
endif;
if ( ! function_exists( 'generate_article_schema' ) ) :
/**
* Figure out which schema tags to apply to the element
* The function determines the itemtype: generate_article_schema( 'BlogPosting' )
* @since 1.3.15
*/
function generate_article_schema( $type = 'CreativeWork' )
{
// Get the itemtype
$itemtype = apply_filters( 'generate_article_itemtype', $type );
// Print the results
echo "itemtype='http://schema.org/$itemtype' itemscope='itemscope'";
}
endif;
if ( ! function_exists( 'generate_show_excerpt' ) ) :
/**
* Figure out if we should show the blog excerpts or full posts
* @since 1.3.15
*/
function generate_show_excerpt()
{
// Get current post
global $post;
// Get Customizer settings
$generate_settings = wp_parse_args(
get_option( 'generate_settings', array() ),
generate_get_defaults()
);
// Check to see if the more tag is being used
$more_tag = apply_filters( 'generate_more_tag', @strpos( $post->post_content, '' ) );
// Check the post format
$format = ( false !== get_post_format() ) ? get_post_format() : 'standard';
// Get the excerpt setting from the Customizer
$show_excerpt = ( 'excerpt' == $generate_settings['post_content'] ) ? true : false;
// If our post format isn't standard, show the full content
$show_excerpt = ( 'standard' !== $format ) ? false : $show_excerpt;
// If the more tag is found, show the full content
$show_excerpt = ( $more_tag ) ? false : $show_excerpt;
// If we're on a search results page, show the excerpt
$show_excerpt = ( is_search() ) ? true : $show_excerpt;
// Return our value
return apply_filters( 'generate_show_excerpt', $show_excerpt );
}
endif;
if ( ! function_exists( 'generate_show_title' ) ) :
/**
* Check to see if we should show our page/post title or not
* @since 1.3.18
*/
function generate_show_title()
{
return apply_filters( 'generate_show_title', true );
}
endif;
if ( ! function_exists( 'generate_update_logo_setting' ) ) :
/**
* Migrate the old logo database entry to the new custom_logo theme mod (WordPress 4.5)
*
* @since 1.3.29
*/
add_action( 'after_setup_theme', 'generate_update_logo_setting' );
function generate_update_logo_setting()
{
// If we're not running WordPress 4.5, bail.
if ( ! function_exists( 'the_custom_logo' ) )
return;
// If we already have a custom logo, bail.
if ( get_theme_mod( 'custom_logo' ) )
return;
// Get our settings.
$generate_settings = wp_parse_args(
get_option( 'generate_settings', array() ),
generate_get_defaults()
);
// Get the old logo value.
$old_value = $generate_settings['logo'];
// If there's no old value, bail.
if ( empty( $old_value ) )
return;
// We made it this far, that means we have an old logo, and no new logo.
// Let's get the ID from our old value.
$logo = attachment_url_to_postid( $old_value );
// Now let's update the new logo setting with our ID.
if ( is_int( $logo ) )
set_theme_mod( 'custom_logo', $logo );
// Got our custom logo? Time to delete the old value
if ( get_theme_mod( 'custom_logo' ) ) :
$new_settings[ 'logo' ] = '';
$update_settings = wp_parse_args( $new_settings, $generate_settings );
update_option( 'generate_settings', $update_settings );
endif;
}
endif;