Я делаю двуязычный сайт 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
Вероятно, это не правильный путь, но я вызвал wp () в своем вызове ajax, и он установил объект $ qTranslate_slug. ОДНАКО ссылки «некрасивые», т.е. http://example.com/fr/?id=68
Как я могу получить красивый URL?
ОБНОВЛЕНИЕ 2
в functions.php у меня есть следующая функция:
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. Тем не менее, я все еще хотел бы знать, как заставить симпатичную версию отображаться в ссылке.
Задача ещё не решена.
Других решений пока нет …