Last active
September 22, 2023 21:00
-
-
Save maciejbis/f93b14c89cb74c965a50eb4e30316f03 to your computer and use it in GitHub Desktop.
Permalink Manager & qTranslate-XT support
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
<?php | |
/* | |
* Plugin Name: Permalink Manager & qTranslate-XT support | |
* Plugin URI: http://maciejbis.net/ | |
* Description: Plugin that adds basic support for qTranslateXT content to Permalink Manager | |
* Version: 1.0.1 | |
* Author: Maciej Bis | |
* Author URI: http://maciejbis.net/ | |
* License: GPL-2.0+ | |
* License URI: http://www.gnu.org/licenses/gpl-2.0.txt | |
* Domain Path: /languages | |
*/ | |
function pmqt_init() { | |
if(function_exists('qtranxf_init_language')) { | |
add_filter('permalink_manager_detect_uri', 'pmqt_detect_uri_language', 9, 3); | |
add_filter('permalink_manager_filter_final_post_permalink', 'pmqt_adjust_uri_language', 9, 3); | |
add_filter('permalink_manager_filter_final_term_permalink', 'pmqt_adjust_uri_language', 9, 3); | |
add_action('edit_form_before_permalink', 'pmqt_uri_editor', 9999); | |
} | |
} | |
add_action('init', 'pmqt_init'); | |
function pmqt_get_default_lang() { | |
global $q_config; | |
if(!empty($q_config['default_language'])) { | |
$def_lang = $q_config['default_language']; | |
} else { | |
$def_lang = ''; | |
} | |
return $def_lang; | |
} | |
function pmqt_detect_uri_language($uri_parts, $request_url, $endpoints) { | |
if(function_exists('qtranxf_getSortedLanguages')) { | |
$languages_list = qtranxf_getSortedLanguages(); | |
} | |
if(is_array($languages_list)) { | |
$languages_list = implode("|", $languages_list); | |
} else { | |
return $uri_parts; | |
} | |
if(!empty($languages_list)) { | |
$current_language = (function_exists('qtranxf_getLanguage')) ? qtranxf_getLanguage() : pmqt_get_default_lang(); | |
preg_match("/^(?:({$languages_list})\/)?(.+?)(?|\/({$endpoints})(?|\/(.*)|$)|\/()([\d]+)\/?)?$/i", $request_url, $regex_parts); | |
$uri_parts['lang'] = $current_language; | |
$uri_parts['uri'] = (!empty($regex_parts[2])) ? $regex_parts[2] : ""; | |
$uri_parts['endpoint'] = (!empty($regex_parts[3])) ? $regex_parts[3] : ""; | |
$uri_parts['endpoint_value'] = (!empty($regex_parts[4])) ? $regex_parts[4] : ""; | |
} | |
return $uri_parts; | |
} | |
/** | |
* Add language code to the custom permalink | |
*/ | |
function pmqt_adjust_uri_language($permalink, $post, $old_permalink) { | |
if(function_exists('qtranxf_convertURLs')) { | |
$permalink = qtranxf_convertURLs($permalink); | |
} | |
return $permalink; | |
} | |
/** | |
* Add URI Editor to pages edited with qTranslateXT | |
*/ | |
/*function pmqt_uri_editor($post) { | |
$post_type = qtranxf_post_type(); | |
$page_config = qtranxf_get_admin_page_config_post_type( $post_type ); | |
if(empty($page_config)) { | |
return; | |
} | |
echo Permalink_Manager_Admin_Functions::display_uri_box($post); | |
}*/ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment