/home/arranoyd/otours_bak/wp-content/themes/genesis/lib/functions/markup.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\Markup
* @author StudioPress
* @license GPL-2.0-or-later
* @link https://my.studiopress.com/themes/genesis/
*/
/**
* Output markup conditionally.
*
* Supported keys for `$args` are:
*
* - `html5` (`sprintf()` pattern markup),
* - `xhtml` (XHTML markup),
* - `context` (name of context),
* - `echo` (default is true).
*
* If the child theme supports HTML5, then this function will output the `html5` value, with a call to `genesis_attr()`
* with the same context added in. Otherwise, it will output the `xhtml` value.
*
* Applies a `genesis_markup_{context}` filter early to allow shortcutting the function.
*
* Applies a `genesis_markup_{context}_output` filter at the end.
*
* @since 1.9.0
*
* @param array $args {
* Contains markup arguments.
* @type string html5 Legacy HTML5 markup.
* @type string xhtml Legacy XHTML markup.
* @type string context Markup context.
* @type string open Opening HTML markup.
* @type string close Closing HTML markup.
* @type string content Content to be placed between open and close HTML markup.
* @type bool echo Flag indicating whether to echo or return the resultant string.
* }
* @return string|null Markup.
*/
function genesis_markup( $args = array() ) {
$defaults = array(
'html5' => '',
'xhtml' => '',
'context' => '',
'open' => '',
'close' => '',
'content' => '',
'echo' => true,
'params' => array(),
);
$args = wp_parse_args( $args, $defaults );
/**
* Filter to short circuit the markup API.
*
* @since 1.9.0
*
* @param bool false Flag indicating short circuit content.
* @param array $args Array with markup arguments.
*
* @see genesis_markup $args Array.
*/
$pre = apply_filters( "genesis_markup_{$args['context']}", false, $args );
if ( false !== $pre ) {
if ( ! $args['echo'] ) {
return $pre;
}
echo $pre;
return null;
}
if ( $args['html5'] || $args['xhtml'] ) {
// If HTML5, return HTML5 tag. Maybe add attributes. Else XHTML.
if ( genesis_html5() ) {
$tag = $args['context'] ? sprintf( $args['html5'], genesis_attr( $args['context'] ) ) : $args['html5'];
} else {
$tag = $args['xhtml'];
}
/**
* Legacy contextual filter to modify 'xhtml' or 'html5' output markup.
*
* @since 1.9.0
*
* @param string $tag HTML tag being processed by the API.
* @param array $args Array with markup arguments.
*
* @see genesis_markup $args Array.
*/
$tag = $args['context'] ? apply_filters( "genesis_markup_{$args['context']}_output", $tag, $args ) : $tag;
if ( ! $args['echo'] ) {
return $tag;
}
echo $tag;
return null;
}
if ( $args['context'] ) {
$open = $args['open'] ? sprintf( $args['open'], genesis_attr( $args['context'], array(), $args ) ) : '';
/**
* Contextual filter to modify 'open' markup.
*
* @since 2.4.0
*
* @param string $open HTML tag being processed by the API.
* @param array $args Array with markup arguments.
*
* @see genesis_markup $args Array.
*/
$open = apply_filters( "genesis_markup_{$args['context']}_open", $open, $args );
/**
* Contextual filter to modify 'close' markup.
*
* @since 2.4.0
*
* @param string $close HTML tag being processed by the API.
* @param array $args Array with markup arguments.
*
* @see genesis_markup $args Array.
*/
$close = apply_filters( "genesis_markup_{$args['context']}_close", $args['close'], $args );
/**
* Contextual filter to modify 'content'.
*
* @since 2.6.0
*
* @param string $content Content being passed through Markup API.
* @param array $args Array with markup arguments.
*
* @see genesis_markup $args Array.
*/
$content = apply_filters( "genesis_markup_{$args['context']}_content", $args['content'], $args );
} else {
$open = $args['open'];
$close = $args['close'];
$content = $args['content'];
}
if ( $open || $args['content'] ) {
/**
* Non-contextual filter to modify 'open' markup.
*
* @since 2.4.0
*
* @param string $open HTML tag being processed by the API.
* @param array $args Array with markup arguments.
*
* @see genesis_markup $args Array.
*/
$open = apply_filters( 'genesis_markup_open', $open, $args );
}
if ( $close || $args['content'] ) {
/**
* Non-contextual filter to modify 'close' markup.
*
* @since 2.4.0
*
* @param string $close HTML tag being processed by the API.
* @param array $args Array with markup arguments.
*
* @see genesis_markup $args Array.
*/
$close = apply_filters( 'genesis_markup_close', $close, $args );
}
if ( $args['echo'] ) {
echo $open . $content . $close;
return null;
} else {
return $open . $content . $close;
}
}
add_action( 'after_setup_theme', 'genesis_xhtml_check' );
/**
* Conditionally load XHTML markup.
*
* @since 2.4.0
*/
function genesis_xhtml_check() {
if ( ! genesis_html5() ) {
require_once PARENT_DIR . '/lib/structure/xhtml.php';
add_filter( 'genesis_markup_open', 'genesis_markup_open_xhtml', 10, 2 );
add_filter( 'genesis_markup_close', 'genesis_markup_close_xhtml', 10, 2 );
add_filter( 'genesis_markup_search-form-label_content', '__return_empty_string' );
_genesis_builtin_sidebar_params();
}
}
/**
* Merge array of attributes with defaults, and apply contextual filter on array.
*
* The contextual filter is of the form `genesis_attr_{context}`.
*
* @since 2.0.0
*
* @param string $context The context, to build filter name.
* @param array $attributes Optional. Extra attributes to merge with defaults.
* @param array $args Optional. Custom data to pass to filter.
* @return array Merged and filtered attributes.
*/
function genesis_parse_attr( $context, $attributes = array(), $args = array() ) {
$defaults = array(
'class' => sanitize_html_class( $context ),
);
$attributes = wp_parse_args( $attributes, $defaults );
// Contextual filter.
return apply_filters( "genesis_attr_{$context}", $attributes, $context, $args );
}
/**
* Build list of attributes into a string and apply contextual filter on string.
*
* The contextual filter is of the form `genesis_attr_{context}_output`.
*
* @since 2.0.0
*
* @param string $context The context, to build filter name.
* @param array $attributes Optional. Extra attributes to merge with defaults.
* @param array $args Optional. Custom data to pass to filter.
* @return string String of HTML attributes and values.
*/
function genesis_attr( $context, $attributes = array(), $args = array() ) {
$attributes = genesis_parse_attr( $context, $attributes, $args );
$output = '';
// Cycle through attributes, build tag attribute string.
foreach ( $attributes as $key => $value ) {
if ( ! $value ) {
continue;
}
if ( true === $value ) {
$output .= esc_html( $key ) . ' ';
} else {
$output .= sprintf( '%s="%s" ', esc_html( $key ), esc_attr( $value ) );
}
}
$output = apply_filters( "genesis_attr_{$context}_output", $output, $attributes, $context, $args );
return trim( $output );
}
/**
* Helper function for use as a filter for when you want to prevent a class from being automatically
* generated and output on an element that is passed through the markup API.
*
* @since 2.2.1
*
* @param array $attributes Existing attributes.
* @return array Attributes with `class` set to empty string.
*/
function genesis_attributes_empty_class( $attributes ) {
$attributes['class'] = '';
return $attributes;
}
/**
* Helper function for use as a filter for when you want to add screen-reader-text class to an element.
*
* @since 2.2.1
*
* @param array $attributes Existing attributes.
* @return array Attributes with `screen-reader-text` added to classes
*/
function genesis_attributes_screen_reader_class( $attributes ) {
$attributes['class'] .= ' screen-reader-text';
return $attributes;
}
add_filter( 'genesis_attr_head', 'genesis_attributes_head' );
/**
* Add attributes for head element.
*
* @since 2.2.0
*
* @param array $attributes Existing attributes for `head` element.
* @return array Amended attributes for `head` element.
*/
function genesis_attributes_head( $attributes ) {
$attributes['class'] = '';
if ( ! is_front_page() ) {
return $attributes;
}
$attributes['itemscope'] = true;
$attributes['itemtype'] = 'https://schema.org/WebSite';
return $attributes;
}
add_filter( 'genesis_attr_body', 'genesis_attributes_body' );
/**
* Add attributes for body element.
*
* @since 2.0.0
*
* @param array $attributes Existing attributes for `body` element.
* @return array Amended attributes for `body` element.
*/
function genesis_attributes_body( $attributes ) {
$attributes['class'] = implode( ' ', get_body_class() );
$attributes['itemscope'] = true;
$attributes['itemtype'] = 'https://schema.org/WebPage';
// Search results pages.
if ( is_search() ) {
$attributes['itemtype'] = 'https://schema.org/SearchResultsPage';
}
return $attributes;
}
add_filter( 'genesis_attr_site-header', 'genesis_attributes_header' );
/**
* Add attributes for site header element.
*
* @since 2.0.0
*
* @param array $attributes Existing attributes for site header element.
* @return array Amended attributes for site header element.
*/
function genesis_attributes_header( $attributes ) {
$attributes['itemscope'] = true;
$attributes['itemtype'] = 'https://schema.org/WPHeader';
return $attributes;
}
add_filter( 'genesis_attr_site-title', 'genesis_attributes_site_title' );
/**
* Add attributes for site title element.
*
* @since 2.0.0
*
* @param array $attributes Existing attributes for site title element.
* @return array Amended attributes for site title element.
*/
function genesis_attributes_site_title( $attributes ) {
$attributes['itemprop'] = 'headline';
return $attributes;
}
add_filter( 'genesis_attr_site-description', 'genesis_attributes_site_description' );
/**
* Add attributes for site description element.
*
* @since 2.0.0
*
* @param array $attributes Existing attributes for site description element.
* @return array Amended attributes for site description element.
*/
function genesis_attributes_site_description( $attributes ) {
$attributes['itemprop'] = 'description';
return $attributes;
}
add_filter( 'genesis_attr_header-widget-area', 'genesis_attributes_header_widget_area' );
/**
* Add attributes for header widget area element.
*
* @since 2.0.0
*
* @param array $attributes Existing attributes for header widget area element.
* @return array Amended attributes for header widget area element.
*/
function genesis_attributes_header_widget_area( $attributes ) {
$attributes['class'] = 'widget-area header-widget-area';
return $attributes;
}
add_filter( 'genesis_attr_breadcrumb', 'genesis_attributes_breadcrumb' );
/**
* Add attributes for breadcrumbs wrapper.
*
* @since 2.2.0
*
* @param array $attributes Existing attributes for breadcrumbs wrapper element.
* @return array Amended attributes for breadcrumbs wrapper element.
*/
function genesis_attributes_breadcrumb( $attributes ) {
// Homepage breadcrumb content contains no links, so no schema.org attributes are needed.
if ( is_home() ) {
return $attributes;
}
// Omit attributes if generic breadcrumb functions are in use.
if ( function_exists( 'breadcrumbs' ) || function_exists( 'crumbs' ) ) {
return $attributes;
}
// Breadcrumb NavXT plugin needs RDFa attributes on the breadcrumb wrapper.
if ( function_exists( 'bcn_display' ) ) {
$attributes['typeof'] = 'BreadcrumbList';
$attributes['vocab'] = 'https://schema.org/';
return $attributes;
}
// Yoast SEO uses JSON-LD and Yoast Breadcrumbs emits no schema.org markup, so no attributes needed.
$yoast_seo_breadcrumbs_enabled = class_exists( 'WPSEO_Breadcrumbs' ) && genesis_get_option( 'breadcrumbs-enable', 'wpseo_titles' );
$yoast_breadcrumbs_plugin_enabled = function_exists( 'yoast_breadcrumb' ) && ! class_exists( 'WPSEO_Breadcrumbs' );
if ( $yoast_seo_breadcrumbs_enabled || $yoast_breadcrumbs_plugin_enabled ) {
return $attributes;
}
// Genesis breadcrumbs require microdata on the wrapper.
$attributes['itemprop'] = 'breadcrumb';
$attributes['itemscope'] = true;
$attributes['itemtype'] = 'https://schema.org/BreadcrumbList';
if ( is_singular( 'post' ) || is_archive() || is_home() || is_page_template( 'page_blog.php' ) ) {
unset( $attributes['itemprop'] );
}
return $attributes;
}
add_filter( 'genesis_attr_breadcrumb-link-wrap', 'genesis_attributes_breadcrumb_link_wrap' );
/**
* Add attributes for breadcrumb item element.
*
* @since 2.2.0
*
* @param array $attributes Existing attributes for breadcrumb item element.
* @return array Amended attributes for breadcrumb item element.
*/
function genesis_attributes_breadcrumb_link_wrap( $attributes ) {
$attributes['itemprop'] = 'itemListElement';
$attributes['itemscope'] = true;
$attributes['itemtype'] = 'https://schema.org/ListItem';
return $attributes;
}
add_filter( 'genesis_attr_breadcrumb-link-wrap-meta', 'genesis_attributes_breadcrumb_link_wrap_meta' );
/**
* Add attributes for breadcrumb link wrap meta element.
*
* @since 2.7.0
*
* @param array $attributes Existing attributes for breadcrumb link wrap meta element.
* @return array Amended attributes for breadcrumb link wrap meta element.
*/
function genesis_attributes_breadcrumb_link_wrap_meta( $attributes ) {
static $position = 0;
$position++;
$attributes['class'] = '';
$attributes['itemprop'] = 'position';
$attributes['content'] = $position;
return $attributes;
}
add_filter( 'genesis_attr_breadcrumb-link', 'genesis_attributes_breadcrumb_link', 10, 3 );
/**
* Add attributes for breadcrumb link element.
*
* @since 2.7.0
*
* @param array $attributes Existing attributes for breadcrumb link element.
* @param string $context Not used. Markup context (ie. `footer-widget-area`).
* @param array $args Markup arguments.
* @return array Amended attributes for breadcrumb link element.
*/
function genesis_attributes_breadcrumb_link( $attributes, $context, $args ) {
$attributes['href'] = esc_url( $args['params']['href'] );
$attributes['itemprop'] = 'item';
return $attributes;
}
add_filter( 'genesis_attr_breadcrumb-link-text-wrap', 'genesis_attributes_breadcrumb_link_text_wrap' );
/**
* Add attributes for breadcrumb link text wrap.
*
* @since 2.7.0
*
* @param array $attributes Existing attributes for breadcrumb link text wrap.
* @return array Amended attributes for breadcrumb link text wrap.
*/
function genesis_attributes_breadcrumb_link_text_wrap( $attributes ) {
$attributes['itemprop'] = 'name';
return $attributes;
}
add_filter( 'genesis_attr_search-form', 'genesis_attributes_search_form' );
/**
* Add attributes for search form.
*
* @since 2.2.0
*
* @param array $attributes Existing attributes for search form element.
* @return array Amended attributes for search form element.
*/
function genesis_attributes_search_form( $attributes ) {
$attributes['itemprop'] = 'potentialAction';
$attributes['itemscope'] = true;
$attributes['itemtype'] = 'https://schema.org/SearchAction';
$attributes['method'] = 'get';
$attributes['action'] = home_url( '/' );
$attributes['role'] = 'search';
return $attributes;
}
add_filter( 'genesis_markup_search-form_content', 'genesis_markup_search_form_content' );
/**
* Amend the search form content to include a meta tag (for schema).
*
* @since 2.7.0
*
* @param string $content Existing search form content.
* @return string Potentially modified search form content.
*/
function genesis_markup_search_form_content( $content ) {
if ( ! genesis_html5() ) {
return $content;
}
$meta = array(
'open' => '<meta %s>',
'context' => 'search-form-meta',
'echo' => false,
);
return $content . genesis_markup( $meta );
}
add_filter( 'genesis_attr_search-form-meta', 'genesis_attributes_search_form_meta' );
/**
* Add attributes for search form meta tag.
*
* @since 2.7.0
*
* @param array $attributes Existing attributes for search form meta element.
* @return array Amended attributes for search form meta element.
*/
function genesis_attributes_search_form_meta( $attributes ) {
$attributes['class'] = '';
$attributes['itemprop'] = 'target';
$attributes['content'] = home_url( '/?s={s}' );
return $attributes;
}
add_filter( 'genesis_markup_search-form-label_open', 'genesis_markup_search_form_label_control', 10, 2 );
add_filter( 'genesis_markup_search-form-label_close', 'genesis_markup_search_form_label_control', 10, 2 );
/**
* Control the open/close tags for the search form label.
*
* Ensure that the label open/close tags get disabled if the label has no content.
*
* @since 2.7.0
*
* @param string $tag Existing tag for search form label element.
* @param array $args Markup arguments.
* @return string Potentially modified tag for search form label element.
*/
function genesis_markup_search_form_label_control( $tag, $args ) {
if ( '' == $args['content'] ) {
return '';
}
return $tag;
}
add_filter( 'genesis_attr_search-form-label', 'genesis_attributes_search_form_label', 10, 3 );
/**
* Add attributes for search form label.
*
* @since 2.7.0
*
* @param array $attributes Existing attributes for footer widget area wrapper elements.
* @param string $context Not used. Markup context (ie. `footer-widget-area`).
* @param array $args Markup arguments.
* @return array Amended attributes for search form label element.
*/
function genesis_attributes_search_form_label( $attributes, $context, $args ) {
if ( isset( $args['params']['input_id'] ) ) {
$attributes['for'] = $args['params']['input_id'];
}
$attributes['class'] .= ' screen-reader-text';
return $attributes;
}
add_filter( 'genesis_attr_search-form-input', 'genesis_attributes_search_form_input', 10, 3 );
/**
* Add attributes for search form input element.
*
* @since 2.7.0
*
* @param array $attributes Existing attributes for footer widget area wrapper elements.
* @param string $context Not used. Markup context (ie. `footer-widget-area`).
* @param array $args Markup arguments.
* @return array Amended attributes.
*/
function genesis_attributes_search_form_input( $attributes, $context, $args ) {
$attributes['type'] = 'search';
$attributes['itemprop'] = 'query-input';
$attributes['name'] = 's';
foreach ( array( 'id', 'value', 'placeholder' ) as $param ) {
if ( isset( $args['params'][ $param ] ) ) {
$attributes[ $param ] = $args['params'][ $param ];
}
}
return $attributes;
}
add_filter( 'genesis_attr_search-form-submit', 'genesis_attributes_search_form_submit', 10, 3 );
/**
* Add attributes for search form submit element.
*
* @since 2.7.0
*
* @param array $attributes Existing attributes for footer widget area wrapper elements.
* @param string $context Not used. Markup context (ie. `footer-widget-area`).
* @param array $args Markup arguments.
* @return array Amended attributes.
*/
function genesis_attributes_search_form_submit( $attributes, $context, $args ) {
$attributes['type'] = 'submit';
if ( isset( $args['params']['value'] ) ) {
$attributes['value'] = $args['params']['value'];
}
return $attributes;
}
add_filter( 'genesis_attr_nav-primary', 'genesis_attributes_nav_primary' );
/**
* Add attributes for primary navigation element.
*
* @since 2.6.0
*
* @param array $attributes Existing attributes for primary navigation element.
* @return array Amended attributes for primary navigation element.
*/
function genesis_attributes_nav_primary( $attributes ) {
$attributes['aria-label'] = __( 'Main', 'genesis' );
return $attributes;
}
add_filter( 'genesis_attr_nav-secondary', 'genesis_attributes_nav_secondary' );
/**
* Add attributes for secondary navigation element.
*
* @since 2.6.0
*
* @param array $attributes Existing attributes for secondary navigation element.
* @return array Amended attributes for secondary navigation element.
*/
function genesis_attributes_nav_secondary( $attributes ) {
$attributes['aria-label'] = __( 'Secondary', 'genesis' );
return $attributes;
}
add_filter( 'genesis_attr_nav-primary', 'genesis_attributes_nav' );
add_filter( 'genesis_attr_nav-secondary', 'genesis_attributes_nav' );
add_filter( 'genesis_attr_nav-header', 'genesis_attributes_nav' );
/**
* Add typical attributes for navigation elements.
*
* Used for primary navigation, secondary navigation, and custom menu widgets in the header right widget area.
*
* @since 2.0.0
*
* @param array $attributes Existing attributes for navigation elements.
* @return array Amended attributes for navigation elements.
*/
function genesis_attributes_nav( $attributes ) {
$attributes['itemscope'] = true;
$attributes['itemtype'] = 'https://schema.org/SiteNavigationElement';
return $attributes;
}
add_filter( 'genesis_attr_nav-link-wrap', 'genesis_attributes_nav_link_wrap' );
/**
* Add attributes for the span wrap around navigation item links.
*
* @since 2.2.0
*
* @param array $attributes Existing attributes for span wrap around navigation item links.
* @return array Amended attributes for span wrap around navigation item links.
*/
function genesis_attributes_nav_link_wrap( $attributes ) {
$attributes['class'] = '';
$attributes['itemprop'] = 'name';
return $attributes;
}
add_filter( 'genesis_attr_nav-link', 'genesis_attributes_nav_link' );
/**
* Add attributes for the navigation item links.
*
* Since we're utilizing a filter that plugins might also want to filter, don't overwrite class here.
*
* @since 2.2.0
*
* @link https://github.com/studiopress/genesis/issues/1226
*
* @param array $attributes Existing attributes for navigation item links.
* @return array Amended attributes for navigation item links.
*/
function genesis_attributes_nav_link( $attributes ) {
$class = str_replace( 'nav-link', '', $attributes['class'] );
$attributes['class'] = $class;
$attributes['itemprop'] = 'url';
return $attributes;
}
add_filter( 'genesis_attr_structural-wrap', 'genesis_attributes_structural_wrap' );
/**
* Add attributes for structural wrap elements.
*
* @since 2.0.0
*
* @param array $attributes Existing attributes for structural wrap elements.
* @return array Amended attributes for structural wrap elements.
*/
function genesis_attributes_structural_wrap( $attributes ) {
$attributes['class'] = 'wrap';
return $attributes;
}
add_filter( 'genesis_attr_content', 'genesis_attributes_content' );
/**
* Add attributes for main content element.
*
* @since 2.0.0
*
* @param array $attributes Existing attributes for `main` element.
* @return array Attributes for `main` element.
*/
function genesis_attributes_content( $attributes ) {
return $attributes;
}
add_filter( 'genesis_attr_taxonomy-archive-description', 'genesis_attributes_taxonomy_archive_description' );
/**
* Add attributes for taxonomy archive description element.
*
* @since 2.2.1
*
* @param array $attributes Existing attributes for taxonomy archive description element.
* @return array Amended attributes for taxonomy archive description element.
*/
function genesis_attributes_taxonomy_archive_description( $attributes ) {
$attributes['class'] = 'archive-description taxonomy-archive-description taxonomy-description';
return $attributes;
}
add_filter( 'genesis_attr_author-archive-description', 'genesis_attributes_author_archive_description' );
/**
* Add attributes for author archive description element.
*
* @since 2.2.1
*
* @param array $attributes Existing attributes for author archive description element.
* @return array Amended attributes for author archive description element.
*/
function genesis_attributes_author_archive_description( $attributes ) {
$attributes['class'] = 'archive-description author-archive-description author-description';
return $attributes;
}
add_filter( 'genesis_attr_cpt-archive-description', 'genesis_attributes_cpt_archive_description' );
/**
* Add attributes for CPT archive description element.
*
* @since 2.2.1
*
* @param array $attributes Existing attributes for CPT archive description element.
* @return array Amended attributes for CPT archive description element.
*/
function genesis_attributes_cpt_archive_description( $attributes ) {
$attributes['class'] = 'archive-description cpt-archive-description';
return $attributes;
}
add_filter( 'genesis_attr_date-archive-description', 'genesis_attributes_date_archive_description' );
/**
* Add attributes for date archive description element.
*
* @since 2.2.1
*
* @param array $attributes Existing attributes for date archive description element.
* @return array Amended attributes for date archive description element.
*/
function genesis_attributes_date_archive_description( $attributes ) {
$attributes['class'] = 'archive-description date-archive-description archive-date';
return $attributes;
}
add_filter( 'genesis_attr_blog-template-description', 'genesis_attributes_blog_template_description' );
/**
* Add attributes for blog template description element.
*
* @since 2.2.1
*
* @param array $attributes Existing attributes for blog template description element.
* @return array Amended attributes for blog template description element.
*/
function genesis_attributes_blog_template_description( $attributes ) {
$attributes['class'] = 'archive-description blog-template-description';
return $attributes;
}
add_filter( 'genesis_attr_posts-page-description', 'genesis_attributes_posts_page_description' );
/**
* Add attributes for posts page description element.
*
* @since 2.2.1
*
* @param array $attributes Existing attributes for posts page description element.
* @return array Amended attributes for posts page description element.
*/
function genesis_attributes_posts_page_description( $attributes ) {
$attributes['class'] = 'archive-description posts-page-description';
return $attributes;
}
add_filter( 'genesis_attr_entry', 'genesis_attributes_entry' );
/**
* Add attributes for entry element.
*
* @since 2.0.0
*
* @param array $attributes Existing attributes for entry element.
* @return array Amended attributes for entry element.
*/
function genesis_attributes_entry( $attributes ) {
$attributes['class'] = implode( ' ', get_post_class() );
if ( ! is_main_query() && ! genesis_is_blog_template() ) {
return $attributes;
}
$attributes['itemscope'] = true;
$attributes['itemtype'] = 'https://schema.org/CreativeWork';
return $attributes;
}
add_filter( 'genesis_attr_entry-image', 'genesis_attributes_entry_image' );
/**
* Add attributes for entry image element.
*
* @since 2.0.0
*
* @param array $attributes Existing attributes for entry image element.
* @return array Amended attributes for entry image element.
*/
function genesis_attributes_entry_image( $attributes ) {
$attributes['class'] = genesis_get_option( 'image_alignment' ) . ' post-image entry-image';
$attributes['itemprop'] = 'image';
return $attributes;
}
add_filter( 'genesis_attr_entry-image-link', 'genesis_attributes_entry_image_link' );
/**
* Add attributes for entry image link element.
*
* @since 2.3.0
*
* @param array $attributes Existing attributes for entry image link element.
* @return array Amended attributes for entry image link element.
*/
function genesis_attributes_entry_image_link( $attributes ) {
$attributes['href'] = get_permalink();
$attributes['aria-hidden'] = 'true';
$attributes['tabindex'] = '-1';
$attributes['class'] = 'entry-image-link';
return $attributes;
}
add_filter( 'genesis_attr_entry-image-widget', 'genesis_attributes_entry_image_widget' );
/**
* Add attributes for entry image element shown in a widget.
*
* @since 2.0.0
*
* @param array $attributes Existing attributes for entry image element shown in a widget.
* @return array Amended attributes for entry image element shown in a widget.
*/
function genesis_attributes_entry_image_widget( $attributes ) {
$attributes['class'] = 'entry-image attachment-' . get_post_type();
$attributes['itemprop'] = 'image';
return $attributes;
}
add_filter( 'genesis_attr_entry-image-grid-loop', 'genesis_attributes_entry_image_grid_loop' );
/**
* Add attributes for entry image element shown in a grid loop.
*
* @since 2.0.0
*
* @param array $attributes Existing attributes for entry image element shown in a grid loop.
* @return array Amended attributes for entry image element shown in a grid loop.
*/
function genesis_attributes_entry_image_grid_loop( $attributes ) {
$attributes['itemprop'] = 'image';
return $attributes;
}
add_filter( 'genesis_attr_entry-author', 'genesis_attributes_entry_author' );
/**
* Add attributes for author element for an entry.
*
* @since 2.0.0
*
* @param array $attributes Existing attributes for author element for an entry.
* @return array Amended attributes for author element for an entry.
*/
function genesis_attributes_entry_author( $attributes ) {
$attributes['itemprop'] = 'author';
$attributes['itemscope'] = true;
$attributes['itemtype'] = 'https://schema.org/Person';
return $attributes;
}
add_filter( 'genesis_attr_entry-author-link', 'genesis_attributes_entry_author_link' );
/**
* Add attributes for entry author link element.
*
* @since 2.0.0
*
* @param array $attributes Existing attributes for entry author link element.
* @return array Amended attributes for entry author link element.
*/
function genesis_attributes_entry_author_link( $attributes ) {
$attributes['itemprop'] = 'url';
$attributes['rel'] = 'author';
return $attributes;
}
add_filter( 'genesis_attr_entry-author-name', 'genesis_attributes_entry_author_name' );
/**
* Add attributes for entry author name element.
*
* @since 2.0.0
*
* @param array $attributes Existing attributes for entry author name element.
* @return array Amended attributes for entry author name element.
*/
function genesis_attributes_entry_author_name( $attributes ) {
$attributes['itemprop'] = 'name';
return $attributes;
}
add_filter( 'genesis_attr_entry-time', 'genesis_attributes_entry_time' );
/**
* Add attributes for time element for an entry.
*
* @since 2.0.0
*
* @param array $attributes Existing attributes for time element for an entry.
* @return array Amended attributes for time element for an entry.
*/
function genesis_attributes_entry_time( $attributes ) {
$attributes['itemprop'] = 'datePublished';
$attributes['datetime'] = get_the_time( 'c' );
return $attributes;
}
add_filter( 'genesis_attr_entry-modified-time', 'genesis_attributes_entry_modified_time' );
/**
* Add attributes for modified time element for an entry.
*
* @since 2.1.0
*
* @param array $attributes Existing attributes for modified time element for an entry.
* @return array Amended attributes for modified time element for an entry.
*/
function genesis_attributes_entry_modified_time( $attributes ) {
$attributes['itemprop'] = 'dateModified';
$attributes['datetime'] = get_the_modified_time( 'c' );
return $attributes;
}
add_filter( 'genesis_attr_entry-title', 'genesis_attributes_entry_title' );
/**
* Add attributes for entry title element.
*
* @since 2.0.0
*
* @param array $attributes Existing attributes for entry title element.
* @return array Amended attributes for entry title element.
*/
function genesis_attributes_entry_title( $attributes ) {
$attributes['itemprop'] = 'headline';
return $attributes;
}
add_filter( 'genesis_attr_entry-title-link', 'genesis_attributes_entry_title_link' );
/**
* Add attributes for entry title link.
*
* @since 2.6.0
*
* @param array $attributes Existing attributes for entry title element.
* @return array Amended attributes for entry title element.
*/
function genesis_attributes_entry_title_link( $attributes ) {
$attributes['rel'] = 'bookmark';
$attributes['href'] = get_permalink();
return $attributes;
}
add_filter( 'genesis_attr_entry-content', 'genesis_attributes_entry_content' );
/**
* Add attributes for entry content element.
*
* @since 2.0.0
*
* @param array $attributes Existing attributes for entry content element.
* @return array Amended attributes for entry content element.
*/
function genesis_attributes_entry_content( $attributes ) {
if ( ! is_main_query() && ! genesis_is_blog_template() ) {
return $attributes;
}
$attributes['itemprop'] = 'text';
return $attributes;
}
add_filter( 'genesis_attr_entry-meta-before-content', 'genesis_attributes_entry_meta' );
add_filter( 'genesis_attr_entry-meta-after-content', 'genesis_attributes_entry_meta' );
/**
* Add attributes for entry meta elements.
*
* @since 2.1.0
*
* @param array $attributes Existing attributes for entry meta elements.
* @return array Amended attributes for entry meta elements.
*/
function genesis_attributes_entry_meta( $attributes ) {
$attributes['class'] = 'entry-meta';
return $attributes;
}
add_filter( 'genesis_attr_archive-pagination', 'genesis_attributes_pagination' );
add_filter( 'genesis_attr_entry-pagination', 'genesis_attributes_pagination' );
add_filter( 'genesis_attr_adjacent-entry-pagination', 'genesis_attributes_pagination' );
add_filter( 'genesis_attr_comments-pagination', 'genesis_attributes_pagination' );
/**
* Add attributes for pagination element.
*
* @since 2.0.0
*
* @param array $attributes Existing attributes for pagination element.
* @return array Amended attributes for pagination element.
*/
function genesis_attributes_pagination( $attributes ) {
$attributes['class'] .= ' pagination';
return $attributes;
}
add_filter( 'genesis_attr_entry-comments', 'genesis_attributes_entry_comments' );
/**
* Add attributes for entry comments element.
*
* @since 2.0.0
*
* @param array $attributes Existing attributes for entry comments element.
* @return array Amended attributes for entry comments element.
*/
function genesis_attributes_entry_comments( $attributes ) {
$attributes['id'] = 'comments';
return $attributes;
}
add_filter( 'genesis_attr_comment', 'genesis_attributes_comment' );
/**
* Add attributes for single comment element.
*
* @since 2.0.0
*
* @param array $attributes Existing attributes for single comment element.
* @return array Amended attributes for single comment element.
*/
function genesis_attributes_comment( $attributes ) {
$attributes['class'] = '';
$attributes['itemprop'] = 'comment';
$attributes['itemscope'] = true;
$attributes['itemtype'] = 'https://schema.org/Comment';
return $attributes;
}
add_filter( 'genesis_attr_comment-author', 'genesis_attributes_comment_author' );
/**
* Add attributes for comment author element.
*
* @since 2.0.0
*
* @param array $attributes Existing attributes for comment author element.
* @return array Amended attributes for comment author element.
*/
function genesis_attributes_comment_author( $attributes ) {
$attributes['itemprop'] = 'author';
$attributes['itemscope'] = true;
$attributes['itemtype'] = 'https://schema.org/Person';
return $attributes;
}
add_filter( 'genesis_attr_comment-author-link', 'genesis_attributes_comment_author_link' );
/**
* Add attributes for comment author link element.
*
* @since 2.1.0
*
* @param array $attributes Existing attributes for comment author link element.
* @return array Amended attributes for comment author link element.
*/
function genesis_attributes_comment_author_link( $attributes ) {
$attributes['rel'] = 'external nofollow';
$attributes['itemprop'] = 'url';
return $attributes;
}
add_filter( 'genesis_attr_comment-time', 'genesis_attributes_comment_time' );
/**
* Add attributes for comment time element.
*
* @since 2.1.0
*
* @param array $attributes Existing attributes for comment time element.
* @return array Amended attributes for comment time element.
*/
function genesis_attributes_comment_time( $attributes ) {
$attributes['datetime'] = esc_attr( get_comment_time( 'c' ) );
$attributes['itemprop'] = 'datePublished';
return $attributes;
}
add_filter( 'genesis_attr_comment-time-link', 'genesis_attributes_comment_time_link' );
/**
* Add attributes for comment time link element.
*
* @since 2.1.0
*
* @param array $attributes Existing attributes for comment time link element.
* @return array Amended attributes for comment time link element.
*/
function genesis_attributes_comment_time_link( $attributes ) {
$attributes['itemprop'] = 'url';
return $attributes;
}
add_filter( 'genesis_attr_comment-content', 'genesis_attributes_comment_content' );
/**
* Add attributes for comment content container.
*
* @since 2.1.0
*
* @param array $attributes Existing attributes for comment content container.
* @return array Amended attributes for comment content container.
*/
function genesis_attributes_comment_content( $attributes ) {
$attributes['itemprop'] = 'text';
return $attributes;
}
add_filter( 'genesis_attr_author-box', 'genesis_attributes_author_box' );
/**
* Add attributes for author box element.
*
* @since 2.0.0
*
* @param array $attributes Existing attributes for author box element.
* @return array Amended attributes for author box element.
*/
function genesis_attributes_author_box( $attributes ) {
$attributes['itemprop'] = 'author';
$attributes['itemscope'] = true;
$attributes['itemtype'] = 'https://schema.org/Person';
return $attributes;
}
add_filter( 'genesis_attr_sidebar-primary', 'genesis_attributes_sidebar_primary' );
/**
* Add attributes for primary sidebar element.
*
* @since 2.0.0
*
* @param array $attributes Existing attributes for primary sidebar element.
* @return array Amended attributes for primary sidebar element.
*/
function genesis_attributes_sidebar_primary( $attributes ) {
$attributes['class'] = 'sidebar sidebar-primary widget-area';
$attributes['role'] = 'complementary';
$attributes['aria-label'] = __( 'Primary Sidebar', 'genesis' );
$attributes['itemscope'] = true;
$attributes['itemtype'] = 'https://schema.org/WPSideBar';
return $attributes;
}
add_filter( 'genesis_attr_sidebar-secondary', 'genesis_attributes_sidebar_secondary' );
/**
* Add attributes for secondary sidebar element.
*
* @since 2.0.0
*
* @param array $attributes Existing attributes for secondary sidebar element.
* @return array Amended attributes for secondary sidebar element.
*/
function genesis_attributes_sidebar_secondary( $attributes ) {
$attributes['class'] = 'sidebar sidebar-secondary widget-area';
$attributes['role'] = 'complementary';
$attributes['aria-label'] = __( 'Secondary Sidebar', 'genesis' );
$attributes['itemscope'] = true;
$attributes['itemtype'] = 'https://schema.org/WPSideBar';
return $attributes;
}
add_filter( 'genesis_attr_site-footer', 'genesis_attributes_site_footer' );
/**
* Add attributes for site footer element.
*
* @since 2.0.0
*
* @param array $attributes Existing attributes for site footer element.
* @return array Amended attributes for site footer element.
*/
function genesis_attributes_site_footer( $attributes ) {
$attributes['itemscope'] = true;
$attributes['itemtype'] = 'https://schema.org/WPFooter';
return $attributes;
}
add_filter( 'genesis_attr_footer-widget-area', 'genesis_attributes_footer_widget_area', 10, 3 );
/**
* Add attributes for footer widget area wrapper elements.
*
* @since 2.5.0
*
* @param array $attributes Existing attributes for footer widget area wrapper elements.
* @param string $context Not used. Markup context (ie. `footer-widget-area`).
* @param array $args Markup arguments.
* @return array Amended attributes for footer widget area wrapper elements.
*/
function genesis_attributes_footer_widget_area( $attributes, $context, $args ) {
$column = ! empty( $args['params'] ) && ! empty( $args['params']['column'] ) ? $args['params']['column'] : 0;
$attributes['class'] = sprintf( 'widget-area footer-widgets-%d ', $column ) . $attributes['class'];
return $attributes;
}
/**
* Add ID markup to the elements to jump to.
*
* @since 2.2.0
*
* @link https://gist.github.com/salcode/7164690
*/
function genesis_skiplinks_markup() {
add_filter( 'genesis_attr_nav-primary', 'genesis_skiplinks_attr_nav_primary' );
add_filter( 'genesis_attr_content', 'genesis_skiplinks_attr_content' );
add_filter( 'genesis_attr_sidebar-primary', 'genesis_skiplinks_attr_sidebar_primary' );
add_filter( 'genesis_attr_sidebar-secondary', 'genesis_skiplinks_attr_sidebar_secondary' );
add_filter( 'genesis_attr_footer-widgets', 'genesis_skiplinks_attr_footer_widgets' );
}
/**
* Add ID markup to primary navigation.
*
* @since 2.2.0
*
* @param array $attributes Existing attributes for primary navigation element.
* @return array Amended attributes for primary navigation element.
*/
function genesis_skiplinks_attr_nav_primary( $attributes ) {
$attributes['id'] = 'genesis-nav-primary';
return $attributes;
}
/**
* Add ID markup to main content area.
*
* @since 2.2.0
*
* @param array $attributes Existing attributes for `main` element.
* @return array Amended attributes for `main` element.
*/
function genesis_skiplinks_attr_content( $attributes ) {
$attributes['id'] = 'genesis-content';
return $attributes;
}
/**
* Add ID markup to primary sidebar.
*
* @since 2.2.0
*
* @param array $attributes Existing attributes for primary sidebar element.
* @return array Amended attributes for primary sidebar element.
*/
function genesis_skiplinks_attr_sidebar_primary( $attributes ) {
$attributes['id'] = 'genesis-sidebar-primary';
return $attributes;
}
/**
* Add ID markup to secondary sidebar.
*
* @since 2.2.0
*
* @param array $attributes Existing attributes for secondary sidebar element.
* @return array Amended attributes for secondary sidebar element.
*/
function genesis_skiplinks_attr_sidebar_secondary( $attributes ) {
$attributes['id'] = 'genesis-sidebar-secondary';
return $attributes;
}
/**
* Add ID markup to footer widget area.
*
* @since 2.2.0
*
* @param array $attributes Existing attributes for footer widget area element.
* @return array Amended attributes for footer widget area element.
*/
function genesis_skiplinks_attr_footer_widgets( $attributes ) {
$attributes['id'] = 'genesis-footer-widgets';
return $attributes;
}
add_filter( 'genesis_attr_pagination-previous', 'genesis_adjacent_entry_attr_previous_post' );
/**
* Add the alignleft class to the previous post link container.
*
* @since 2.7.0
*
* @param array $attributes Existing attributes for the previous post element.
* @return array Amended attributes for the previous post element.
*/
function genesis_adjacent_entry_attr_previous_post( $attributes ) {
$attributes['class'] .= ' alignleft';
return $attributes;
}
add_filter( 'genesis_attr_pagination-next', 'genesis_adjacent_entry_attr_next_post' );
/**
* Add the alignright class to the next post link container.
*
* @since 2.7.0
*
* @param array $attributes Existing attributes for the next post element.
* @return array Amended attributes for the next post element.
*/
function genesis_adjacent_entry_attr_next_post( $attributes ) {
$attributes['class'] .= ' alignright';
return $attributes;
}