Last active
September 28, 2022 09:28
-
-
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…
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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; | |
} |
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
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?