Making WordPress.org


Ignore:
Timestamp:
10/15/2019 06:53:44 AM (7 years ago)
Author:
dd32
Message:

WordPress.org, Plugin Directory, and Theme Directory: Sync the hreflang tag implementations. This prevents linking to non-existent sites.

Fixes #4713.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg/functions.php

    r8571 r9180  
    238238        $sites = wp_cache_get( 'local-sites', 'locale-associations' );
    239239
     240        // WARNING: for any changes below, check other uses of the `locale-assosciations` group as there's shared cache keys in use.
    240241        if ( false === $sites ) {
    241242                global $wpdb;
     
    249250                require_once GLOTPRESS_LOCALES_PATH;
    250251
    251                 foreach ( $sites as $site ) {
     252                foreach ( $sites as $key => $site ) {
    252253                        $gp_locale = \GP_Locales::by_field( 'wp_locale', $site->locale );
    253254                        if ( ! $gp_locale ) {
    254                                 unset( $sites[ $site->locale ] );
     255                                unset( $sites[ $key ] );
    255256                                continue;
    256257                        }
     
    258259                        // Skip non-existing subdomains, e.g. 'de_CH_informal'.
    259260                        if ( false !== strpos( $site->subdomain, '_' ) ) {
    260                                 unset( $sites[ $site->locale ] );
     261                                unset( $sites[ $key ] );
    261262                                continue;
    262263                        }
    263264
    264                         if ( isset( $gp_locale->slug ) && ! in_array( $gp_locale->slug, $unsupported_languages ) ) {
    265                                 $sites[ $site->locale ]->hreflang = $gp_locale->slug;
     265                        // Skip unsupported locales.
     266                        if ( in_array( $gp_locale->slug, $unsupported_languages ) ) {
     267                                unset( $sites[ $key ] );
     268                                continue;
     269                        }
     270
     271                        $hreflang = false;
     272
     273                        // Note that Google only supports ISO 639-1 codes.
     274                        if ( isset( $gp_locale->lang_code_iso_639_1 ) && isset( $gp_locale->country_code ) ) {
     275                                $hreflang = $gp_locale->lang_code_iso_639_1 . '-' . $gp_locale->country_code;
     276                        } elseif ( isset( $gp_locale->lang_code_iso_639_1 ) ) {
     277                                $hreflang = $gp_locale->lang_code_iso_639_1;
     278                        } elseif ( isset( $gp_locale->lang_code_iso_639_2 ) ) {
     279                                $hreflang = $gp_locale->lang_code_iso_639_2;
     280                        } elseif ( isset( $gp_locale->lang_code_iso_639_3 ) ) {
     281                                $hreflang = $gp_locale->lang_code_iso_639_3;
     282                        }
     283
     284                        if ( $hreflang ) {
     285                                $sites[ $key ]->hreflang = strtolower( $hreflang );
    266286                        } else {
    267                                 unset( $sites[ $site->locale ] );
     287                                unset( $sites[ $key ] );
    268288                        }
    269289                }
Note: See TracChangeset for help on using the changeset viewer.