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;
}
@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