/wp-content/themes/genesis/lib/functions/head.php
https://github.com/livinglab/openlab · PHP · 267 lines · 138 code · 31 blank · 98 comment · 32 complexity · 7ee9f0c6c07ff8ffd1bcc585c6a25677 MD5 · raw file
- <?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\Header
- * @author StudioPress
- * @license GPL-2.0-or-later
- * @link https://my.studiopress.com/themes/genesis/
- */
- /**
- * Determine the meta description based on contextual criteria.
- *
- * @since 2.4.0
- *
- * @return string Meta description.
- */
- function genesis_get_seo_meta_description() {
- $description = '';
- $post_id = null;
- // If we're on the root page.
- if ( genesis_is_root_page() ) {
- $description = genesis_get_seo_option( 'home_description' ) ? genesis_get_seo_option( 'home_description' ) : get_bloginfo( 'description' );
- }
- // When the page is set as the Posts Page in WordPress core, use the $post_id of the page when loading SEO values.
- if ( is_home() && get_option( 'page_for_posts' ) && get_queried_object_id() ) {
- $post_id = get_option( 'page_for_posts' );
- }
- // If we're on a single post / page / attachment.
- if ( null !== $post_id || is_singular() ) {
- if ( genesis_get_custom_field( '_genesis_description', $post_id ) ) {
- // Description is set via custom field.
- $description = genesis_get_custom_field( '_genesis_description', $post_id );
- } elseif ( genesis_get_custom_field( '_aioseop_description', $post_id ) ) {
- // All-in-One SEO Pack (latest, vestigial).
- $description = genesis_get_custom_field( '_aioseop_description', $post_id );
- } elseif ( genesis_get_custom_field( '_headspace_description', $post_id ) ) {
- // Headspace2 (vestigial).
- $description = genesis_get_custom_field( '_headspace_description', $post_id );
- } elseif ( genesis_get_custom_field( 'thesis_description', $post_id ) ) {
- // Thesis (vestigial).
- $description = genesis_get_custom_field( 'thesis_description', $post_id );
- } elseif ( genesis_get_custom_field( 'description', $post_id ) ) {
- // All-in-One SEO Pack (old, vestigial).
- $description = genesis_get_custom_field( 'description', $post_id );
- }
- } elseif ( is_category() || is_tag() || is_tax() ) {
- $term = get_queried_object();
- $term_description = get_term_meta( $term->term_id, 'description', true );
- $description = ! empty( $term_description ) ? $term_description : '';
- } elseif ( is_post_type_archive() && genesis_has_post_type_archive_support() ) {
- $cpt_description = genesis_get_cpt_option( 'description' );
- $description = $cpt_description ? $cpt_description : '';
- } elseif ( is_author() ) {
- $description = get_the_author_meta( 'meta_description', (int) get_query_var( 'author' ) );
- }
- /**
- * Filter the content for the description meta tag.
- *
- * @since 2.4.0
- *
- * @param string $description Meta description string.
- */
- $description = apply_filters( 'genesis_get_seo_meta_description', $description );
- return trim( $description );
- }
- /**
- * Determine the meta keywords based on contextual criteria.
- *
- * @since 2.4.0
- *
- * @return string Content for keywords meta tag.
- */
- function genesis_get_seo_meta_keywords() {
- $keywords = '';
- $post_id = null;
- // If we're on the root page.
- if ( genesis_is_root_page() ) {
- $keywords = genesis_get_seo_option( 'home_keywords' );
- }
- // When the page is set as the Posts Page in WordPress core, use the $post_id of the page when loading SEO values.
- if ( is_home() && get_option( 'page_for_posts' ) && get_queried_object_id() ) {
- $post_id = get_option( 'page_for_posts' );
- }
- if ( null !== $post_id || is_singular() ) {
- if ( genesis_get_custom_field( '_genesis_keywords', $post_id ) ) {
- // Keywords are set via custom field.
- $keywords = genesis_get_custom_field( '_genesis_keywords', $post_id );
- } elseif ( genesis_get_custom_field( '_aioseop_keywords', $post_id ) ) {
- // All-in-One SEO Pack (latest, vestigial).
- $keywords = genesis_get_custom_field( '_aioseop_keywords', $post_id );
- } elseif ( genesis_get_custom_field( 'thesis_keywords', $post_id ) ) {
- // Thesis (vestigial).
- $keywords = genesis_get_custom_field( 'thesis_keywords', $post_id );
- } elseif ( genesis_get_custom_field( 'keywords', $post_id ) ) {
- // All-in-One SEO Pack (old, vestigial).
- $keywords = genesis_get_custom_field( 'keywords', $post_id );
- }
- } elseif ( is_category() || is_tag() || is_tax() ) {
- $term = get_queried_object();
- $keywords = get_term_meta( $term->term_id, 'keywords', true );
- } elseif ( is_post_type_archive() && genesis_has_post_type_archive_support() ) {
- $keywords = genesis_get_cpt_option( 'keywords' ) ? genesis_get_cpt_option( 'keywords' ) : '';
- } elseif ( is_author() ) {
- $keywords = get_the_author_meta( 'meta_keywords', (int) get_query_var( 'author' ) );
- }
- /**
- * Filter the content for the keywords meta tag.
- *
- * @since 2.4.0
- *
- * @param string $keywords Meta keywords string.
- */
- $keywords = apply_filters( 'genesis_get_seo_meta_keywords', $keywords );
- return trim( $keywords );
- }
- /**
- * Determine the `noindex`, `nofollow`, `noodp`, `noydir`, `noarchive` robots meta code for the current context.
- *
- * @since 2.4.0
- *
- * @global WP_Query $wp_query Query object.
- *
- * @return string String for `content` attribute of `robots` meta tag.
- */
- function genesis_get_robots_meta_content() {
- global $wp_query;
- $post_id = null;
- // Defaults.
- $directives = array(
- 'noindex' => '',
- 'nofollow' => '',
- 'noarchive' => genesis_get_seo_option( 'noarchive' ) ? 'noarchive' : '',
- 'noodp' => genesis_get_seo_option( 'noodp' ) ? 'noodp' : '',
- 'noydir' => genesis_get_seo_option( 'noydir' ) ? 'noydir' : '',
- );
- // Check root page SEO settings, set noindex, nofollow and noarchive.
- if ( genesis_is_root_page() ) {
- $directives['noindex'] = genesis_get_seo_option( 'home_noindex' ) ? 'noindex' : $directives['noindex'];
- $directives['nofollow'] = genesis_get_seo_option( 'home_nofollow' ) ? 'nofollow' : $directives['nofollow'];
- $directives['noarchive'] = genesis_get_seo_option( 'home_noarchive' ) ? 'noarchive' : $directives['noarchive'];
- }
- // When the page is set as the Posts Page in WordPress core, use the $post_id of the page when loading SEO values.
- if ( is_home() && get_option( 'page_for_posts' ) && get_queried_object_id() ) {
- $post_id = get_option( 'page_for_posts' );
- }
- if ( null !== $post_id || is_singular() ) {
- $directives['noindex'] = genesis_get_custom_field( '_genesis_noindex', $post_id ) ? 'noindex' : $directives['noindex'];
- $directives['nofollow'] = genesis_get_custom_field( '_genesis_nofollow', $post_id ) ? 'nofollow' : $directives['nofollow'];
- $directives['noarchive'] = genesis_get_custom_field( '_genesis_noarchive', $post_id ) ? 'noarchive' : $directives['noarchive'];
- } elseif ( is_category() || is_tag() || is_tax() ) {
- $term = $wp_query->get_queried_object();
- $directives['noindex'] = get_term_meta( $term->term_id, 'noindex', true ) ? 'noindex' : $directives['noindex'];
- $directives['nofollow'] = get_term_meta( $term->term_id, 'nofollow', true ) ? 'nofollow' : $directives['nofollow'];
- $directives['noarchive'] = get_term_meta( $term->term_id, 'noarchive', true ) ? 'noarchive' : $directives['noarchive'];
- if ( is_category() ) {
- $directives['noindex'] = genesis_get_seo_option( 'noindex_cat_archive' ) ? 'noindex' : $directives['noindex'];
- $directives['noarchive'] = genesis_get_seo_option( 'noarchive_cat_archive' ) ? 'noarchive' : $directives['noarchive'];
- } elseif ( is_tag() ) {
- $directives['noindex'] = genesis_get_seo_option( 'noindex_tag_archive' ) ? 'noindex' : $directives['noindex'];
- $directives['noarchive'] = genesis_get_seo_option( 'noarchive_tag_archive' ) ? 'noarchive' : $directives['noarchive'];
- }
- } elseif ( is_post_type_archive() && genesis_has_post_type_archive_support() ) {
- $directives['noindex'] = genesis_get_cpt_option( 'noindex' ) ? 'noindex' : $directives['noindex'];
- $directives['nofollow'] = genesis_get_cpt_option( 'nofollow' ) ? 'nofollow' : $directives['nofollow'];
- $directives['noarchive'] = genesis_get_cpt_option( 'noarchive' ) ? 'noarchive' : $directives['noarchive'];
- } elseif ( is_author() ) {
- $directives['noindex'] = get_the_author_meta( 'noindex', (int) get_query_var( 'author' ) ) ? 'noindex' : $directives['noindex'];
- $directives['nofollow'] = get_the_author_meta( 'nofollow', (int) get_query_var( 'author' ) ) ? 'nofollow' : $directives['nofollow'];
- $directives['noarchive'] = get_the_author_meta( 'noarchive', (int) get_query_var( 'author' ) ) ? 'noarchive' : $directives['noarchive'];
- $directives['noindex'] = genesis_get_seo_option( 'noindex_author_archive' ) ? 'noindex' : $directives['noindex'];
- $directives['noarchive'] = genesis_get_seo_option( 'noarchive_author_archive' ) ? 'noarchive' : $directives['noarchive'];
- } elseif ( is_date() ) {
- $directives['noindex'] = genesis_get_seo_option( 'noindex_date_archive' ) ? 'noindex' : $directives['noindex'];
- $directives['noarchive'] = genesis_get_seo_option( 'noarchive_date_archive' ) ? 'noarchive' : $directives['noarchive'];
- } elseif ( is_search() ) {
- $directives['noindex'] = genesis_get_seo_option( 'noindex_search_archive' ) ? 'noindex' : $directives['noindex'];
- $directives['noarchive'] = genesis_get_seo_option( 'noarchive_search_archive' ) ? 'noarchive' : $directives['noarchive'];
- }
- /**
- * Filter the array of directives for the robots meta tag.
- *
- * @since 2.4.0
- *
- * @param array $directives May contain keys for `noindex`, `nofollow`, `noodp`, `noydir`, `noarchive`.
- */
- $directives = apply_filters( 'genesis_get_robots_meta_content', $directives );
- // Strip empty array items.
- $directives = array_filter( $directives );
- return implode( ',', $directives );
- }
- /**
- * Return favicon URL.
- *
- * Falls back to Genesis theme favicon.
- *
- * URL to favicon is filtered via `genesis_favicon_url` before being echoed.
- *
- * @since 2.4.0
- *
- * @return string Path to favicon.
- */
- function genesis_get_favicon_url() {
- /**
- * Filter to allow child theme to short-circuit this function.
- *
- * @since 1.1.2
- *
- * @param bool $favicon `false`.
- */
- $pre = apply_filters( 'genesis_pre_load_favicon', false );
- if ( false !== $pre ) {
- $favicon = $pre;
- } elseif ( file_exists( CHILD_DIR . '/images/favicon.ico' ) ) {
- $favicon = CHILD_URL . '/images/favicon.ico';
- } elseif ( file_exists( CHILD_DIR . '/images/favicon.gif' ) ) {
- $favicon = CHILD_URL . '/images/favicon.gif';
- } elseif ( file_exists( CHILD_DIR . '/images/favicon.png' ) ) {
- $favicon = CHILD_URL . '/images/favicon.png';
- } elseif ( file_exists( CHILD_DIR . '/images/favicon.jpg' ) ) {
- $favicon = CHILD_URL . '/images/favicon.jpg';
- } else {
- $favicon = GENESIS_IMAGES_URL . '/favicon.ico';
- }
- /**
- * Filter the favicon URL.
- *
- * @since 1.0.0
- *
- * @param string $favicon Favicon URL.
- */
- $favicon = apply_filters( 'genesis_favicon_url', $favicon );
- return trim( $favicon );
- }