Popovses blog

Личный блог

WPML и Visual Composer (Post Grid)

16.01.2016
Категория: Wordpress плагины

Есть клевенький премиум плагин Visual Composer. Клиенты его особенно любят за то, что мышкой можно накликать себе удобную структуру страницы без помощи разработчика. А еще есть плагин монстрик WPML, чтобы можно было сделать мультиязычный сайт.

WPML работает таким образом, что на каждый язык одной и той же статьи создает в базе как бы новые посты, а при выводе выбирает какой из этих постов под какой язык показывать. Проблема, о которой я хочу рассказать в том, что Visual Composer при выводе записей в модуле Post Grid, не дает плагину WPML автоматом выводить записи под нужный язык и поэтому выводит все в кучу.

Допустим, есть у вас в блоге 2 записи «Коплю денег на дизайн как у Борисова» и «Учусь в школе блоггеров, скоро выпускаю видеокурс «Как зарабатывать, выпуская видеокурсы» » и у каждой из них есть версия еще и на английском, и на украинском. WPML создаст в базе данных 2*3=6 записей. И при этом Visual Composer будет выводить все 6 штук на каждом языке. А происходит это по одной простой причине — по дефолту VC (для модуля Post Grid) в своих циклах к WP не разрешает другим фильтрам что-то изменять.

Например, для Post Grid в файле

wp-content/plugins/js_composer/include/classes/shortcodes/vc-basic-grid.php аргументы к запросу выглядят так:

Где suppress_filters означает как бы «откинуть все фильтры» (или на русском правильнее сказать «отбросить»?). Хотя дословно переводится как «подавлять». Короче говоря, смысл уловили?

Так вот, мы видим, что фильтр vc_basic_grid_filter_query_suppress_filters возвращает значение true. Чтобы это исправить и вернуть false, достаточно очень простенько где-то в файлике functions.php прописать следующее:

Теперь WPML может применять свои фильтры к запросу, который делает Visual Composer и Post Grid будет выводить не 6 записей, а всего 2 на выбранном языке.

Честно говоря, я пока не нашел причин, почему стоит покупать WPML вместо свободного qTranslate X.

Добавить комментарий