我正在制作一个双语 Wordpress 网站。我想通过 AJAX 加载帖子并链接到同一个帖子,但使用其他语言。我正在使用 qTranslate slug,通常我依赖全局 $qtranslate_slug 变量,如下所示:
$qtranslate_slug->get_current_url($targetLang);
如果您在帖子页面上,这可以正常工作,但在 ajax 加载的帖子中不起作用。
在我的 AJAX 调用中,我以这种方式设置 post 对象:
$post = get_post($postId);
setup_postdata($post);
我从帖子中获取了所有数据,只是不确定要调用什么函数来设置 $qtranslate_slug 对象。在 ajax 调用中,$qtranslate_slug->current_url 是一个空数组。
更新 1
这可能不是正确的方法,但我在 ajax 调用中调用了 wp() 并设置了 $qTranslate_slug 对象。但是,链接是“丑陋的”,即http://example.com/fr/?id=68 我怎样才能获得漂亮的网址?
在functions.php中更新2 ,我有以下功能:
function t($fr, $en){
switch(qtrans_getLanguage()){
case "fr":
return $fr;
default:
return $en;
}
}
这是我的ajax代码:
<?php
global $qtranslate_slug;
if(isset($_GET["id"])){
$siteRoot = dirname(__FILE__) . "/../../../../";
require_once $siteRoot . "wp-load.php";
wp();
$post = get_post($_GET["id"]);
setup_postdata($post);
// generate post html. I didn't include it here, because it has nothing to do with the problem.
?>
<script>
var alternateUrl = "<?php echo $qtranslate_slug->get_current_url(t('en', 'fr')); ?>";
</script>
<?php } ?>
更新 3
qTranslate 给你一个 url 的样式:http://example.com/fr/?id=68 如果将“id”改为“p”,当你访问页面时,url 将被转换为漂亮的 url . 但是,我仍然想知道如何让漂亮的版本显示在链接中。