Changeset 2909
- Timestamp:
- 04/06/2016 03:48:34 PM (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
sites/trunk/wordpress.org/public_html/wp-content/plugins/theme-directory/theme-directory.php
r2908 r2909 1027 1027 1028 1028 /** 1029 * Adds hreflang link attributes to theme pages. 1030 * 1031 * @link https://support.google.com/webmasters/answer/189077?hl=en Use hreflang for language and regional URLs 1032 * @link https://sites.google.com/site/webmasterhelpforum/en/faq-internationalisation FAQ: Internationalisation 1033 */ 1034 function wporg_themes_add_hreflang_link_attributes() { 1035 $sites = wp_cache_get( 'local-sites', 'wporg-theme-directory' ); 1036 1037 if ( false === $sites ) { 1038 global $wpdb; 1039 $sites = $wpdb->get_results( 'SELECT locale, subdomain FROM locales', OBJECT_K ); 1040 if ( ! $sites ) { 1041 return; 1042 } 1043 1044 require_once GLOTPRESS_LOCALES_PATH; 1045 1046 foreach ( $sites as $site ) { 1047 $gp_locale = GP_Locales::by_field( 'wp_locale', $site->locale ); 1048 if ( ! $gp_locale ) { 1049 unset( $sites[ $site->locale ] ); 1050 continue; 1051 } 1052 1053 // Note that Google only supports ISO 639-1 codes. 1054 if ( isset( $gp_locale->lang_code_iso_639_1 ) && isset( $gp_locale->country_code ) ) { 1055 $hreflang = $gp_locale->lang_code_iso_639_1 . '-' . $gp_locale->country_code; 1056 } elseif ( isset( $gp_locale->lang_code_iso_639_1 ) ) { 1057 $hreflang = $gp_locale->lang_code_iso_639_1; 1058 } elseif ( isset( $gp_locale->lang_code_iso_639_2 ) ) { 1059 $hreflang = $gp_locale->lang_code_iso_639_2; 1060 } elseif ( isset( $gp_locale->lang_code_iso_639_3 ) ) { 1061 $hreflang = $gp_locale->lang_code_iso_639_3; 1062 } 1063 1064 if ( $hreflang ) { 1065 $sites[ $site->locale ]->hreflang = strtolower( $hreflang ); 1066 } else { 1067 unset( $sites[ $site->locale ] ); 1068 } 1069 } 1070 1071 // Add en_US to the list of sites. 1072 $sites['en_US'] = (object) array( 1073 'locale' => 'en_US', 1074 'hreflang' => 'en', 1075 'subdomain' => '' 1076 ); 1077 1078 uasort( $sites, function( $a, $b ) { 1079 return strcasecmp( $a->hreflang, $b->hreflang ); 1080 } ); 1081 1082 wp_cache_set( 'local-sites', $sites, 'wporg-theme-directory', DAY_IN_SECONDS ); 1083 } 1084 1085 foreach ( $sites as $site ) { 1086 $url = sprintf( 1087 'https://%swordpress.org%s', 1088 $site->subdomain ? "{$site->subdomain}." : '', 1089 $_SERVER[ 'REQUEST_URI' ] 1090 ); 1091 1092 printf( 1093 '<link rel="alternate" href="%s" hreflang="%s" />', 1094 esc_url( $url ), 1095 esc_attr( $site->hreflang ) 1096 ); 1097 } 1098 echo "\n"; 1099 } 1100 add_action( 'wp_head', 'wporg_themes_add_hreflang_link_attributes' ); 1101 1102 /** 1029 1103 * Filter the URLs to use the current localized domain name, rather than WordPress.org. 1030 1104 *
Note: See TracChangeset
for help on using the changeset viewer.