* @copyright Copyright (c) 2008 - 2015, Justin Tadlock * @link http://themehybrid.com/hybrid-core * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html */ # Attributes for major structural elements. add_filter( 'hybrid_attr_body', 'hybrid_attr_body', 5 ); add_filter( 'hybrid_attr_header', 'hybrid_attr_header', 5 ); add_filter( 'hybrid_attr_footer', 'hybrid_attr_footer', 5 ); add_filter( 'hybrid_attr_content', 'hybrid_attr_content', 5 ); add_filter( 'hybrid_attr_sidebar', 'hybrid_attr_sidebar', 5, 2 ); add_filter( 'hybrid_attr_menu', 'hybrid_attr_menu', 5, 2 ); # Header attributes. add_filter( 'hybrid_attr_head', 'hybrid_attr_head', 5 ); add_filter( 'hybrid_attr_branding', 'hybrid_attr_branding', 5 ); add_filter( 'hybrid_attr_site-title', 'hybrid_attr_site_title', 5 ); add_filter( 'hybrid_attr_site-description', 'hybrid_attr_site_description', 5 ); # Archive page header attributes. add_filter( 'hybrid_attr_archive-header', 'hybrid_attr_archive_header', 5 ); add_filter( 'hybrid_attr_archive-title', 'hybrid_attr_archive_title', 5 ); add_filter( 'hybrid_attr_archive-description', 'hybrid_attr_archive_description', 5 ); # Post-specific attributes. add_filter( 'hybrid_attr_post', 'hybrid_attr_post', 5 ); add_filter( 'hybrid_attr_entry', 'hybrid_attr_post', 5 ); // Alternate for "post". add_filter( 'hybrid_attr_entry-title', 'hybrid_attr_entry_title', 5 ); add_filter( 'hybrid_attr_entry-author', 'hybrid_attr_entry_author', 5 ); add_filter( 'hybrid_attr_entry-published', 'hybrid_attr_entry_published', 5 ); add_filter( 'hybrid_attr_entry-content', 'hybrid_attr_entry_content', 5 ); add_filter( 'hybrid_attr_entry-summary', 'hybrid_attr_entry_summary', 5 ); add_filter( 'hybrid_attr_entry-terms', 'hybrid_attr_entry_terms', 5, 2 ); # Comment specific attributes. add_filter( 'hybrid_attr_comment', 'hybrid_attr_comment', 5 ); add_filter( 'hybrid_attr_comment-author', 'hybrid_attr_comment_author', 5 ); add_filter( 'hybrid_attr_comment-published', 'hybrid_attr_comment_published', 5 ); add_filter( 'hybrid_attr_comment-permalink', 'hybrid_attr_comment_permalink', 5 ); add_filter( 'hybrid_attr_comment-content', 'hybrid_attr_comment_content', 5 ); /** * Outputs an HTML element's attributes. * * @since 2.0.0 * @access public * @param string $slug The slug/ID of the element (e.g., 'sidebar'). * @param string $context A specific context (e.g., 'primary'). * @param array $attr Array of attributes to pass in (overwrites filters). * @return void */ function hybrid_attr( $slug, $context = '', $attr = array() ) { echo hybrid_get_attr( $slug, $context, $attr ); } /** * Gets an HTML element's attributes. This function is actually meant to be filtered by theme authors, plugins, * or advanced child theme users. The purpose is to allow folks to modify, remove, or add any attributes they * want without having to edit every template file in the theme. So, one could support microformats instead * of microdata, if desired. * * @since 2.0.0 * @access public * @param string $slug The slug/ID of the element (e.g., 'sidebar'). * @param string $context A specific context (e.g., 'primary'). * @param array $attr Array of attributes to pass in (overwrites filters). * @return string */ function hybrid_get_attr( $slug, $context = '', $attr = array() ) { $out = ''; $attr = wp_parse_args( $attr, apply_filters( "hybrid_attr_{$slug}", array(), $context ) ); if ( empty( $attr ) ) $attr['class'] = $slug; foreach ( $attr as $name => $value ) $out .= $value ? sprintf( ' %s="%s"', esc_html( $name ), esc_attr( $value ) ) : esc_html( " {$name}" ); return trim( $out ); } /* === Structural === */ /** * element attributes. * * @since 2.0.0 * @access public * @param array $attr * @return array */ function hybrid_attr_body( $attr ) { $attr['class'] = join( ' ', get_body_class() ); $attr['dir'] = is_rtl() ? 'rtl' : 'ltr'; $attr['itemscope'] = 'itemscope'; $attr['itemtype'] = 'http://schema.org/WebPage'; if ( is_singular( 'post' ) || is_home() || is_archive() ) $attr['itemtype'] = 'http://schema.org/Blog'; elseif ( is_search() ) $attr['itemtype'] = 'http://schema.org/SearchResultsPage'; return $attr; } /** * Page
element attributes. * * @since 2.0.0 * @access public * @param array $attr * @return array */ function hybrid_attr_header( $attr ) { $attr['id'] = 'header'; $attr['class'] = 'site-header'; $attr['role'] = 'banner'; $attr['itemscope'] = 'itemscope'; $attr['itemtype'] = 'http://schema.org/WPHeader'; return $attr; } /** * Page