問題描述
我有一個關於固定連結和重寫 url 的問題。我正在編寫一個翻譯外掛,我想在我的網址中新增語言短碼 (類似於 http://eyewebz.com/EN/other_permalinks) 。目前,我正在分配一個 $ _Session-variable 來儲存當前選定的語言,但這並不是真正可見的使用者。
我可以使用下面的程式碼重寫 URL,但在更改 url 後,該頁面不顯示任何內容,並且全域性 $ post-variable 完全為空。程式碼如下。
function alter_link_language($permalink)
{
$active_language = get_user_selected_language();
$current_language_shortcode = strtoupper( $active_language["shortname"] );
$permalink = str_replace(get_bloginfo('home'), '', $permalink);
return get_bloginfo('home') . '/' . $current_language_shortcode . $permalink;
}
add_filter('post_link', 'alter_link_language', 10);
add_filter('page_link', 'alter_link_language', 10);
如果有人可以用這個方式幫助我,這將是非常感謝!
提前致謝!
最佳解決方案
沒有一個很好的方法來新增一個我所知道的 URI 基礎的永久連結,同時保持 WordPress 的快樂。然而,您可以使用 add_rewrite_endpoint()將語言新增到 URI 的末尾;
add_action('init', 'foobar_rewrite_tag');
function foobar_rewrite_tag(){
$languages = array('en', 'sp'); // Probably have this sourced from your plugin options
foreach($languages as $language)
add_rewrite_endpoint( $language, EP_PERMALINK | EP_PAGES);
}
您可以在模板中使用一個簡單的 getter 函式:
function get_language_code(){
global $wp_query;
$languages = array('en', 'sp'); //Source this from your plugin options
foreach($languages as $language)
if(isset($wp_query->query_vars[$language])) //Note this will not have a value assigned, so we check if it's set to determine the language
return $language;
}
您的永久連結將如下所示:
我知道這並不完全符合你的要求,但是這種方法可以讓 WordPress 的這種方式更為簡單。
參考:http://codex.wordpress.org/Rewrite_API/add_rewrite_endpoint
參考文獻
注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。