233 lines
5.4 KiB
PHP
233 lines
5.4 KiB
PHP
<?php
|
|
/**
|
|
* Genesis Framework.
|
|
*
|
|
* WARNING: This file is part of the core Genesis Framework. DO NOT edit this file under any circumstances.
|
|
* Please do all modifications in the form of a child theme.
|
|
*
|
|
* @package Genesis\Layout
|
|
* @author StudioPress
|
|
* @license GPL-2.0+
|
|
* @link https://my.studiopress.com/themes/genesis/
|
|
*/
|
|
|
|
add_filter( 'content_width', 'genesis_content_width', 10, 3 );
|
|
/**
|
|
* Filter the content width based on the user selected layout.
|
|
*
|
|
* @since 1.6.0
|
|
*
|
|
* @param int $default Default width.
|
|
* @param int $small Small width.
|
|
* @param int $large Large width.
|
|
* @return int Content width.
|
|
*/
|
|
function genesis_content_width( $default, $small, $large ) {
|
|
|
|
switch ( genesis_site_layout( 0 ) ) {
|
|
case 'full-width-content':
|
|
$width = $large;
|
|
break;
|
|
case 'content-sidebar-sidebar':
|
|
case 'sidebar-content-sidebar':
|
|
case 'sidebar-sidebar-content':
|
|
$width = $small;
|
|
break;
|
|
default:
|
|
$width = $default;
|
|
}
|
|
|
|
return $width;
|
|
|
|
}
|
|
|
|
add_filter( 'body_class', 'genesis_custom_body_class', 15 );
|
|
/**
|
|
* Add custom field body class(es) to the body classes.
|
|
*
|
|
* It accepts values from a per-post or per-page custom field, and only outputs when viewing a singular page.
|
|
*
|
|
* @since 1.4.0
|
|
*
|
|
* @param array $classes Existing body classes.
|
|
* @return array Amended body classes.
|
|
*/
|
|
function genesis_custom_body_class( array $classes ) {
|
|
|
|
$new_class = is_singular() ? genesis_get_custom_field( '_genesis_custom_body_class' ) : null;
|
|
|
|
if ( $new_class ) {
|
|
$classes[] = $new_class;
|
|
}
|
|
|
|
return $classes;
|
|
|
|
}
|
|
|
|
add_filter( 'body_class', 'genesis_header_body_classes' );
|
|
/**
|
|
* Add header-* classes to the body class.
|
|
*
|
|
* We can use pseudo-variables in our CSS file, which helps us achieve multiple header layouts with minimal code.
|
|
*
|
|
* @since 1.0.0
|
|
*
|
|
* @param array $classes Existing body classes.
|
|
* @return array Amended body classes.
|
|
*/
|
|
function genesis_header_body_classes( array $classes ) {
|
|
|
|
if ( current_theme_supports( 'custom-header' ) ) {
|
|
if ( get_theme_support( 'custom-header', 'default-text-color' ) !== get_header_textcolor() || get_theme_support( 'custom-header', 'default-image' ) !== get_header_image() ) {
|
|
$classes[] = 'custom-header';
|
|
}
|
|
}
|
|
|
|
if ( 'image' === genesis_get_option( 'blog_title' ) || ( get_header_image() && ! display_header_text() ) ) {
|
|
$classes[] = 'header-image';
|
|
}
|
|
|
|
if ( ! is_active_sidebar( 'header-right' ) && ! has_action( 'genesis_header_right' ) ) {
|
|
$classes[] = 'header-full-width';
|
|
}
|
|
|
|
return $classes;
|
|
|
|
}
|
|
|
|
add_filter( 'body_class', 'genesis_layout_body_classes' );
|
|
/**
|
|
* Add site layout classes to the body classes.
|
|
*
|
|
* We can use pseudo-variables in our CSS file, which helps us achieve multiple site layouts with minimal code.
|
|
*
|
|
* @since 1.0.0
|
|
*
|
|
* @param array $classes Existing body classes.
|
|
* @return array Amended body classes.
|
|
*/
|
|
function genesis_layout_body_classes( array $classes ) {
|
|
|
|
$site_layout = genesis_site_layout();
|
|
|
|
if ( $site_layout ) {
|
|
$classes[] = $site_layout;
|
|
}
|
|
|
|
return $classes;
|
|
|
|
}
|
|
|
|
add_filter( 'body_class', 'genesis_archive_no_results_body_class' );
|
|
/**
|
|
* Add archive-no-results body class on empty archive pages.
|
|
*
|
|
* Allows CSS styling of archive pages that have no results.
|
|
*
|
|
* @since 2.2.0
|
|
*
|
|
* @global WP_Query $wp_query Query object.
|
|
*
|
|
* @param array $classes Existing body classes.
|
|
* @return array Amended body classes.
|
|
*/
|
|
function genesis_archive_no_results_body_class( array $classes ) {
|
|
|
|
global $wp_query;
|
|
|
|
if ( ! $wp_query->posts && is_archive() ) {
|
|
$classes[] = 'archive-no-results';
|
|
}
|
|
|
|
return $classes;
|
|
|
|
}
|
|
|
|
add_filter( 'body_class', 'genesis_style_selector_body_classes' );
|
|
/**
|
|
* Add style selector classes to the body classes.
|
|
*
|
|
* Enables style selector support in child themes, which helps us achieve multiple site styles with minimal code.
|
|
*
|
|
* @since 1.8.0
|
|
*
|
|
* @param array $classes Existing body classes.
|
|
* @return array Amended body classes.
|
|
*/
|
|
function genesis_style_selector_body_classes( array $classes ) {
|
|
|
|
$current = genesis_get_option( 'style_selection' );
|
|
|
|
if ( $current ) {
|
|
$classes[] = $current;
|
|
}
|
|
|
|
return $classes;
|
|
|
|
}
|
|
|
|
add_filter( 'body_class', 'genesis_cpt_archive_body_class', 15 );
|
|
/**
|
|
* Adds a custom class to the custom post type archive body classes.
|
|
*
|
|
* It accepts a value from the archive settings page.
|
|
*
|
|
* @since 2.0.0
|
|
*
|
|
* @param array $classes Existing body classes.
|
|
* @return array Amended body classes.
|
|
*/
|
|
function genesis_cpt_archive_body_class( array $classes ) {
|
|
|
|
if ( ! is_post_type_archive() || ! genesis_has_post_type_archive_support() ) {
|
|
return $classes;
|
|
}
|
|
|
|
$new_class = genesis_get_cpt_option( 'body_class' );
|
|
|
|
if ( $new_class ) {
|
|
$classes[] = $new_class;
|
|
}
|
|
|
|
return $classes;
|
|
|
|
}
|
|
|
|
add_action( 'genesis_after_content', 'genesis_get_sidebar' );
|
|
/**
|
|
* Output the sidebar.php file if layout allows for it.
|
|
*
|
|
* @since 1.0.0
|
|
*/
|
|
function genesis_get_sidebar() {
|
|
|
|
$site_layout = genesis_site_layout();
|
|
|
|
// Don't load sidebar on pages that don't need it.
|
|
if ( 'full-width-content' === $site_layout ) {
|
|
return;
|
|
}
|
|
|
|
get_sidebar();
|
|
|
|
}
|
|
|
|
add_action( 'genesis_after_content_sidebar_wrap', 'genesis_get_sidebar_alt' );
|
|
/**
|
|
* Output the sidebar_alt.php file if layout allows for it.
|
|
*
|
|
* @since 1.0.0
|
|
*/
|
|
function genesis_get_sidebar_alt() {
|
|
|
|
$site_layout = genesis_site_layout();
|
|
|
|
// Don't load sidebar-alt on pages that don't need it.
|
|
if ( in_array( $site_layout, array( 'content-sidebar', 'sidebar-content', 'full-width-content' ) ) ) {
|
|
return;
|
|
}
|
|
|
|
get_sidebar( 'alt' );
|
|
|
|
}
|