Допустим установлен у вас плагин qTranslate-X. Допустим есть два языка: русский и английский. К примеру вам нужно вывести и русский и английский заголовок статьи на русскоязычной версии сайта. Сходу это сделать не получится, т.к. этот плагин автоматически переводит всю статью на текущий язык.
Делается это так:
$postId = get_the_ID(); wp_cache_delete($postId, 'posts'); $mypost = WP_Post::get_instance($postId); $titleEn = qtrans_use('en', $mypost->post_title, false);
$titleEn — будет содержать заголовок на английском. В общем вот и все. Подробнее почему именно так, смотрите далее.
Конструкция $mypost = WP_Post::get_instance($postId);
получает из базы запись в виде объекта в непреобразованном виде. Т.е. со стандартными тегами <!--:en-->
и <!--:ru-->
. Что дает возможность получать любой перевод в независимости от текущего языка.
Если же мы работаем с текущей статей, то ядро WordPress-а кеширует эту статью, до того как начнется вывод в шаблон. Но до попадания в кеш эта статья успевает обработаться плагином qTranslate-X. И в итоге в кеш попадает уже переведенный объект статьи. Поэтому кеш мы сначала сбрасываем wp_cache_delete($postId, 'posts');
а уже потом получаем саму запись $mypost = WP_Post::get_instance($postId);
.
А уж после, мы можем перевести либо часть объекта, либо весь объект в любой нужный нам язык:
$titleEn = qtrans_use('en', $mypost->post_title, false); $titleRu = qtrans_use('ru', $mypost->post_title, false); //или весь объект сразу вот так: $mypost = qtrans_use('en', $mypost, false);
Спасибо большое за статью, было хорошо, но мало :-) нельзя ли подробнее узнать какие настройки вообще изначально вносить в этот плагин после установки и активации? спасибо ещё раз
Да я уже не помню точно. Вроде как там все интуитивно понятно. Настраиваешь список языков — и в общем то все :)
qtranxf_use if you are using qtranslate-XT :) great article