[Помогите] WPML: мультиязычный сайт на WP и сортировка

Тема в разделе "Wordpress", создана пользователем typus, 11 окт 2014.

Модераторы: Sorcus
  1. typus

    typus

    Регистр.:
    25 июл 2007
    Сообщения:
    640
    Симпатии:
    154
    Изменил первоначальное сообщение, так как залил вчера двуязычную версию сайта на сервер, и могу теперь данную проблему показать более наглядно.

    Приветствую, достаточно спешно ищу удовлетворительное решение следующей проблемы.
    Есть сайт на вордпрессе, собственно, вот он, в настоящее время языков 2 - англ и рус.
    Проблема.
    При применении любого правила сортировки (например, см пункт меню Properties) при втором (недефолтном) языке результат сортировки выдается на дефолтном языке....Т.е. у меня дефолтный англ, второй - рус, например, тот же пункт меню Properties у меня назван Объекты и находится по адресу http://bostonrealproperty.com/ru/properties/ - связан с англ http://bostonrealproperty.com/properties/
    Теперь я например хочу отсортировать объекты по цене по возрастанию, находясь в русской версии, результат получаю как http://bostonrealproperty.com/properties/?filter_sort_by=price&filter_order=ASC- т.е. по англ.
    Если я вручную добавляю ru - http://bostonrealproperty.com/ru/properties/?filter_sort_by=price&filter_order=ASC - результат сортировки корректный, но как добиться, чтобы это []ru[/] при сортировке не удалялось, не пойму...

    Единственное похожее видел в гугле вот это - но там как видно сортировка посредством woocommerce, а у меня тут woocommerce нет... Однако думаю все равно как то должно это решаться, может быть, где то можно вручную (htaccess?) прописать редиректы для соотв-их урлов, благо их там немного.

    Т.е. если нет красивого и правильного решения, возможно ли каким то образом задать редиректы, например с http://bostonrealproperty.com/properties/?filter_sort_by=price&filter_order=ASC редиректить на http://bostonrealproperty.com/ru/properties/?filter_sort_by=price&filter_order=ASC, но конечно только для переходов с любой []ru[/] страницы ( http://bostonrealproperty.com/ru.... )

    добавлено:

    Написал в суппорт автора шаблона, как вариант, в непереведенных местах использовать условие для вывода нужного контента или подключения оного в зависимости от текущей языковой локали.
    Поскольку для многоязычности используется wpml, автор предложил использовать следующую конструкцию:
    Код:
        {% if ICL_LANGUAGE_CODE=='ru' %}
            {выводим для ru}
        {% else %}
            {выводим для en}
        {% endif %}
    Что самое смешное, в гугле довольно много комментов по данной проблеме, и в основном, все у людей работает.
    У меня - нет.
    Если использую код выше, то результат сортировки всегда - в обоих языках - выводится на англ, если изменяю на
    Код:
        {% if ICL_LANGUAGE_CODE=='en' %}
            {выводим для en}
        {% else %}
            {выводим для ru}
        {% endif %}
    то результат сортировки в обоих языках всегда по русски.
    Автор темы стал меня игнорировать, сказал, типа, все должно работать, но у меня не срабатывает и я искренне недоумеваю, в чем проблема.
    Если мыслить логически, исходя из результатов сортировки, условие срабатывает, но переменная ICL_LANGUAGE_CODE всегда в первом случае возвращает false - и совершенно не понятно, почему...
    Использую ICL_LANGUAGE_CODE для вывода нужных виджетов - в зависимости от языка - все срабатывает...а тут нет...
    Предлагается всесто ICL_LANGUAGE_CODE использовать wpml_current_lang - результат абсолютно идентичен предыдущему...
    Есть идеи?


    Проблема решена, публикую решение, может, кому то еще пригодится.

    Для начала необходимо внести изменения в соответствующий php файл, в моем случае это archive-property.php - если изменения будут вноситься в другие шаблоны, необходимо найти соотв-ий php-файл и внести данное изменение в него.
    Например, для header.twig это header.php, для footer.twig это footer.php ну и т.д.

    Я буду вносить изменения в шаблон sort.twig, который подключен к шаблону archive-property.twig, поэтому первое изменение я и вношу в файл archive-property.php,

    Итак, в archive-property.php в секцию echo View::render необходимо добавить след-ю строку:
    Код:
    'wpml_current_lang' => ICL_LANGUAGE_CODE
    После чего уже изменения можно вносить в шаблон.

    Я изменяю sotr.twig, но можно создать свой шаблон для нужного языка и подключать его.
    Я изменяю в sort.twig
    Код:
            <form action="{{ wp.get_bloginfo('wpurl') }}/{{ wp.__('properties', 'aviators') }}/" method="get" class="form-sort form-horizontal">
    на
    Код:
        {% if wpml_current_lang == 'en' %}
            <form action="{{ wp.get_bloginfo('wpurl') }}/{{ wp.__('properties', 'aviators') }}/" method="get" class="form-sort form-horizontal">
        {% else %}
            <form action="{{ wp.get_bloginfo('wpurl') }}/{{ wp.__('ru/properties', 'aviators') }}/" method="get" class="form-sort form-horizontal">
        {% endif %}
    
    И все работает, условие отрабатывает корректно, и сортировка также корректно работает.
     
    Последнее редактирование: 20 окт 2014