PATCH: Add support for hreflang
-
I needed to have support for hreflang within this plugin. So I went ahead a created two patches:
1.) Refactoring of the code to make getting the directory reusable
From bdd984122d77b3dfe9d282fba45d654b7bc813e2 Mon Sep 17 00:00:00 2001
From: Christoph Brill <[email protected]>
Date: Sun, 3 May 2015 22:15:04 +0200
Subject: [PATCH 1/2] Refactor home directory determination to
'_mltlngg_get_home_dir'---
multilanguage.php | 70 ++++++++++++++++++++++++-------------------------------
1 file changed, 30 insertions(+), 40 deletions(-)diff --git a/multilanguage.php b/multilanguage.php
index b352960..6c0131f 100755
--- a/multilanguage.php
+++ b/multilanguage.php
@@ -363,10 +363,36 @@ if ( ! function_exists( 'mltlngg_switch_wp_locale' ) ) {
}
}+if ( ! function_exists( '_mltlngg_get_home_dir' ) ) {
+ function _mltlngg_get_home_dir( $home, $mltlngg_is_subfolder ) {
+ global $current_blog;
+ if ( ! $mltlngg_is_subfolder ) {
+ if ( $current_blog ) {
+ $home_main = ( ( isset( $_SERVER["HTTPS"] ) && $_SERVER["HTTPS"] == "on" ) ? "https://" : "https://" ) . $current_blog->domain;
+ $home_main = esc_url( $home_main );
+ }
+ } else {
+ $home_dir = str_replace( 'https://www.', '', $home );
+ $home_dir = str_replace( 'https://www.', '', $home_dir );
+ $home_dir = str_replace( 'https://', '', $home_dir );
+ $home_dir = str_replace( 'https://', '', $home_dir );
+ $server_name = $_SERVER['SERVER_NAME'];
+ if ( 'www.' == substr( $server_name, 0, 4 ) )
+ $server_name = substr( $server_name, 4 );
+ $home_dir = str_replace( $server_name . ':' . $_SERVER['SERVER_PORT'], '', $home_dir );
+ $home_dir = str_replace( $server_name, '', $home_dir );
+ $home_dir = rtrim( $home_dir, '/ ' );
+ $home_dir_count = strlen( $home_dir );
+ $home_main = substr( $home, 0, - $home_dir_count );
+ }
+ return $home_main;
+ }
+}
+
/* Function for redirect when display language is changed */
if ( ! function_exists( 'mltlngg_redirect' ) ) {
function mltlngg_redirect() {
- global $current_blog, $mltlngg_current_language, $mltlngg_old_language, $mltlngg_enabled_languages;
+ global $mltlngg_current_language, $mltlngg_old_language, $mltlngg_enabled_languages;
if ( ! function_exists( 'is_plugin_active' ) )
require_once( ABSPATH . 'wp-admin/includes/plugin.php' );@@ -379,25 +405,7 @@ if ( ! function_exists( 'mltlngg_redirect' ) ) {
$mltlngg_is_subfolder = mltlngg_is_subfolder();
if ( ( is_multisite() && ! is_subdomain_install() ) || $mltlngg_is_subfolder ) {
- if ( ! $mltlngg_is_subfolder ) {
- if ( $current_blog ) {
- $home_main = ( ( isset( $_SERVER["HTTPS"] ) && $_SERVER["HTTPS"] == "on" ) ? "https://" : "https://" ) . $current_blog->domain;
- $home_main = esc_url( $home_main );
- }
- } else {
- $home_dir = str_replace( 'https://www.', '', $home );
- $home_dir = str_replace( 'https://www.', '', $home_dir );
- $home_dir = str_replace( 'https://', '', $home_dir );
- $home_dir = str_replace( 'https://', '', $home_dir );
- $server_name = $_SERVER['SERVER_NAME'];
- if ( 'www.' == substr( $server_name, 0, 4 ) )
- $server_name = substr( $server_name, 4 );
- $home_dir = str_replace( $server_name . ':' . $_SERVER['SERVER_PORT'], '', $home_dir );
- $home_dir = str_replace( $server_name, '', $home_dir );
- $home_dir = rtrim( $home_dir, '/ ' );
- $home_dir_count = strlen( $home_dir );
- $home_main = substr( $home, 0, - $home_dir_count );
- }
+ $home_main = _mltlngg_get_home_dir( $home, $mltlngg_is_subfolder );if ( ! empty( $mltlngg_old_language ) && ! empty( $mltlngg_current_language ) && $mltlngg_old_language != $mltlngg_current_language ) {
if ( false === strpos( $_SERVER['REQUEST_URI'], $mltlngg_old_language ) ) {
@@ -707,7 +715,7 @@ if ( ! function_exists( 'register_mltlngg_widget' ) ) {if ( ! function_exists( 'mltlngg_get_switcher_block' ) ) {
function mltlngg_get_switcher_block( $mltlngg_language_switcher = false ) {
- global $mltlngg_current_language, $mltlngg_enabled_languages, $current_blog, $mltlngg_options;
+ global $mltlngg_current_language, $mltlngg_enabled_languages, $mltlngg_options;$switcher = '<div class="mltlngg_switcher">';
@@ -724,25 +732,7 @@ if ( ! function_exists( 'mltlngg_get_switcher_block' ) ) {
$home = get_option( 'home' );
$mltlngg_is_subfolder = mltlngg_is_subfolder();
if ( ( is_multisite() && ! is_subdomain_install() ) || $mltlngg_is_subfolder ) {
- if ( ! $mltlngg_is_subfolder ) {
- if ( $current_blog ) {
- $home_main = ( ( isset( $_SERVER["HTTPS"] ) && $_SERVER["HTTPS"] == "on" ) ? "https://" : "https://" ) . $current_blog->domain;
- $home_main = esc_url( $home_main );
- }
- } else {
- $home_dir = str_replace( 'https://www.', '', $home );
- $home_dir = str_replace( 'https://www.', '', $home_dir );
- $home_dir = str_replace( 'https://', '', $home_dir );
- $home_dir = str_replace( 'https://', '', $home_dir );
- $server_name = $_SERVER['SERVER_NAME'];
- if ( 'www.' == substr( $server_name, 0, 4 ) )
- $server_name = substr( $server_name, 4 );
- $home_dir = str_replace( $server_name . ':' . $_SERVER['SERVER_PORT'], '', $home_dir );
- $home_dir = str_replace( $server_name, '', $home_dir );
- $home_dir = rtrim( $home_dir, '/ ' );
- $home_dir_count = strlen( $home_dir );
- $home_main = substr( $home, 0, - $home_dir_count );
- }
+ $home_main = _mltlngg_get_home_dir( $home, $mltlngg_is_subfolder );
$language_link = $home_main . str_replace_once( $mltlngg_current_language, $mltlngg_one_language['locale'], $_SERVER['REQUEST_URI'] );
} else
$language_link = $home . str_replace_once( $mltlngg_current_language, $mltlngg_one_language['locale'], $_SERVER['REQUEST_URI'] );
--
2.3.72.) The patch to actually add support for hreflang
From cf167daf7c4632763cadddc58712ae3121439818 Mon Sep 17 00:00:00 2001
From: Christoph Brill <[email protected]>
Date: Sun, 3 May 2015 22:18:50 +0200
Subject: [PATCH 2/2] Add support for 'hreflang' meta tags---
multilanguage.php | 23 +++++++++++++++++++++++
1 file changed, 23 insertions(+)diff --git a/multilanguage.php b/multilanguage.php
index 6c0131f..5fcd0f6 100755
--- a/multilanguage.php
+++ b/multilanguage.php
@@ -1940,6 +1940,27 @@ if ( ! function_exists( '_mltlngg_delete_options' ) ) {
}
}+/* Add hreflang */
+if ( ! function_exists( 'mltlngg_hreflang' ) ) {
+ function mltlngg_hreflang() {
+ if ( is_single() ) {
+ global $mltlngg_enabled_languages, $mltlngg_current_language;
+ foreach ( $mltlngg_enabled_languages as $mltlngg_one_language ) {
+ if ( $mltlngg_one_language['locale'] != $mltlngg_current_language ) {
+ $home = get_option( 'home' );
+ $mltlngg_is_subfolder = mltlngg_is_subfolder();
+ if ( ( is_multisite() && ! is_subdomain_install() ) || $mltlngg_is_subfolder ) {
+ $home_main = _mltlngg_get_home_dir( $home, $mltlngg_is_subfolder );
+ $language_link = $home_main . str_replace_once( $mltlngg_current_language, $mltlngg_one_language['locale'], $_SERVER['REQUEST_URI'] );
+ } else
+ $language_link = $home . str_replace_once( $mltlngg_current_language, $mltlngg_one_language['locale'], $_SERVER['REQUEST_URI'] );
+ echo '<link rel="alternate" hreflang="'.$mltlngg_one_language['locale'].'" href="'.$language_link.'" />'.PHP_EOL;
+ }
+ }
+ }
+ }
+}
+
register_activation_hook( __FILE__, 'mltlngg_plugin_activate' );
add_action( 'wpmu_new_blog', 'mltlngg_new_blog', 10, 6 );
add_action( 'delete_blog', 'mltlngg_delete_blog', 10 );
@@ -1992,5 +2013,7 @@ add_filter( 'plugin_row_meta', 'mltlngg_register_plugin_links', 10, 2 );
add_action( 'admin_footer', 'mltlngg_ajax_languages_tab' );
add_action( 'wp_ajax_mltlngg_ajax_callback', 'mltlngg_ajax_callback' );+add_action('wp_head', 'mltlngg_hreflang');
+
register_uninstall_hook( __FILE__, 'mltlngg_delete_options' );
?>
\ No newline at end of file
--
2.3.7This applies against 1.0.8.
- The topic ‘PATCH: Add support for hreflang’ is closed to new replies.