1

我正在制作一个双语 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 . 但是,我仍然想知道如何让漂亮的版本显示在链接中。

4

0 回答 0