Changeset 5569
- Timestamp:
- 06/15/2017 12:56:23 PM (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-plugins/functions.php
r5459 r5569 243 243 244 244 /** 245 * Adds hreflang link attributes to plugin pages.246 *247 * @link https://support.google.com/webmasters/answer/189077?hl=en Use hreflang for language and regional URLs.248 * @link https://sites.google.com/site/webmasterhelpforum/en/faq-internationalisation FAQ: Internationalisation.249 */250 function hreflang_link_attributes() {251 if ( is_404() ) {252 return;253 }254 255 wp_cache_add_global_groups( array( 'locale-associations' ) );256 257 if ( false === ( $sites = wp_cache_get( 'local-sites', 'locale-associations' ) ) ) {258 global $wpdb;259 260 $sites = $wpdb->get_results( 'SELECT locale, subdomain FROM locales', OBJECT_K );261 if ( ! $sites ) {262 return;263 }264 265 require_once GLOTPRESS_LOCALES_PATH;266 267 foreach ( $sites as $site ) {268 $gp_locale = \GP_Locales::by_field( 'wp_locale', $site->locale );269 if ( ! $gp_locale ) {270 unset( $sites[ $site->locale ] );271 continue;272 }273 274 $hreflang = false;275 276 // Note that Google only supports ISO 639-1 codes.277 if ( isset( $gp_locale->lang_code_iso_639_1 ) && isset( $gp_locale->country_code ) ) {278 $hreflang = $gp_locale->lang_code_iso_639_1 . '-' . $gp_locale->country_code;279 } elseif ( isset( $gp_locale->lang_code_iso_639_1 ) ) {280 $hreflang = $gp_locale->lang_code_iso_639_1;281 } elseif ( isset( $gp_locale->lang_code_iso_639_2 ) ) {282 $hreflang = $gp_locale->lang_code_iso_639_2;283 } elseif ( isset( $gp_locale->lang_code_iso_639_3 ) ) {284 $hreflang = $gp_locale->lang_code_iso_639_3;285 }286 287 if ( $hreflang && 'art' !== $hreflang ) {288 $sites[ $site->locale ]->hreflang = strtolower( $hreflang );289 } else {290 unset( $sites[ $site->locale ] );291 }292 }293 294 // Add en_US to the list of sites.295 $sites['en_US'] = (object) array(296 'locale' => 'en_US',297 'hreflang' => 'en',298 'subdomain' => ''299 );300 301 uasort( $sites, function( $a, $b ) {302 return strcasecmp( $a->hreflang, $b->hreflang );303 } );304 305 wp_cache_set( 'local-sites', $sites, 'locale-associations' );306 }307 308 foreach ( $sites as $site ) {309 $url = sprintf(310 'https://%swordpress.org%s',311 $site->subdomain ? "{$site->subdomain}." : '',312 $_SERVER[ 'REQUEST_URI' ]313 );314 315 printf(316 '<link rel="alternate" href="%s" hreflang="%s" />' . "\n",317 esc_url( $url ),318 esc_attr( $site->hreflang )319 );320 }321 }322 add_action( 'wp_head', __NAMESPACE__ . '\hreflang_link_attributes' );323 324 /**325 245 * Bold archive terms are made here. 326 246 *
Note: See TracChangeset
for help on using the changeset viewer.