Skip to content

Instantly share code, notes, and snippets.

@l2aelba
Last active September 28, 2022 09:28
Show Gist options
  • Star 4 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save l2aelba/5244912 to your computer and use it in GitHub Desktop.
Save l2aelba/5244912 to your computer and use it in GitHub Desktop.
This is a Multilingual Wordpress functions to detect a language by pretty URLs like.. `domain.com/en/` `domain.com/postname/en/` `domain.com/pagetname/en/` Add this code in your `functions.php` After added code go to `wp-admin/options-permalink.php` press `Save Changes` So you can use `<?php echo lang();?>` `<?php if( lang() === "en" ) ?>` In yo…
function lang_support() {
return array('en','fr'); // Add your support lang-code (1st place is a default)
}
function rewrite_lang(){
$langs = lang_support();
foreach($langs as $lang) {
add_rewrite_endpoint($lang,EP_PERMALINK|EP_PAGES|EP_ROOT|EP_CATEGORIES);
}
}
add_action('init','rewrite_lang');
function lang(){
global $wp_query;
$langs = lang_support();
$lang_r = "";
foreach($langs as $lang) {
if(isset($wp_query->query_vars[$lang])) {
$lang_r = $lang;
$_SESSION['lang'] = $lang_r;
}
}
if(in_array($lang_r,$langs)) {
return $lang_r;
} else {
return $langs[0];
}
}
function init_session(){session_start();}
add_action('init','init_session',1);
function lang_session() { // Redirect by JS if session is set
$url_lang= basename($_SERVER['REQUEST_URI']);
if(!in_array($url_lang,lang_support()) && isset($_SESSION['lang'])) {
if(!is_404()) {
wp_redirect(currentURL().$_SESSION['lang'],301);
exit;
}
}
}
add_action('wp_head','lang_session');
function output_buffer() {ob_start();}
add_action('init','output_buffer');
function currentURL() {
$pageURL=(@$_SERVER["HTTPS"]=="on")?"https://":"http://";
if($_SERVER["SERVER_PORT"]!="80"){
$pageURL.=$_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
}else{
$pageURL.=$_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
}
return $pageURL;
}
Copy link

ghost commented Oct 25, 2015

Hey, I'm trying to use this, and it works great.. although there seems to be one slight but major issue.

When trying to view the homepage, it will redirect to /localhost/en (for example).. and as a result will not show my static homepage (but instead shows the latest posts). I'm not using a blog on this site. Is there something that can be added to deal with static Front pages?

@CJTS15
Copy link

CJTS15 commented Sep 28, 2022

Hi, I know this is old, but I was just wondering how this detects what language the site is showing? I am using the PRISNA plugin and am having trouble with the permalinks too.

I want to achieve like this one domain.com/ja and the site is in Japanese. However it returns 404 on mine.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment