WordPress 4.0+ i problemy z qTranslate

Gdybym miał wskazać jeden, najbardziej znienawidzony przez developerów WordPressa plugin, to z całą pewnością byłoby to qTranslate. Wtyczka tak bardzo dyskredytowana na WordUpach czy WordCampach, że spokojnie można by organizować konkursy w tym, kto bardziej po niej pojedzie.

Czy cały ten hejt jest słuszny? Jak najbardziej. Niedawno jeden z klientów poprosił o update WordPressa z wersji 3.6 do najnowszej 4.1. Serwis był wielojęzyczny, oczywiście obsługiwany przez qTranslate i z ilością podstron na tyle dużą, że odpadała opcja zmienienia wtyczki na inną. Po aktualizacji na pierwszy rzut oka wszystko było w porządku, nic się nie rozjechało po stronie frontentdu a same tłumaczenia działały bezproblemowo. Gorzej było z adminką, a dokładniej z edycją wpisów. Poniżej zamieszczam listę problemów z którymi musiałem się borykać i sposoby na ich rozwiązanie:

Wtyczka qTranslate wyłącza się z powodu braku kompatybilności z obecną wersją WordPressa.

Na 100% zaraz po zainstalowaniu wtyczki, po wejściu w edycję wpisu lub strony zobaczycie komunikat: The qTranslate Editor has disabled itself because it hasn’t been tested with your WordPress version yet. Jest to chyba największa zmora osób pracujących z qTranslate a sam komunikat jest już chyba znakiem firmowym wtyczki. Na szczęście bardzo łatwo można się go pozbyć. Wystarczy, że otworzycie plik qtranslate.php znajdujący w głównym katalogu pluginu i w okolicach 90 linijki podmienicie:

define('QT_SUPPORTED_WP_VERSION', '3.8.1');

na

define('QT_SUPPORTED_WP_VERSION', $wp_version);

Brak możliwości przełączania się między edytorem wizualnym i tekstowym

Tutaj już zmiany w wtyczce są bardziej hardcorowe, ponieważ wymagają edycji aż trzech plików: qtranslate_javascript.php, qtranslate_hooks.php, qtranslate_wphacks.php. Poprawiony kod znajdziecie tutaj: https://gist.github.com/warenhaus/10990386/. Wystarczy że podmienicie całą zawartość każdego z plików i problemy z edytorem wizualnym powinny zniknąć.

Niewyświetlający się przycisk dodawania mediów

Tym razem by naprawić ten bug, trzeba z czegoś zrezygnować, a mianowicie musimy wyrejestrować skrypt odpowiedzialny za automatyczne powiększania pola edytora wraz z pisaniem. W tym celu np. w functions.php należy wrzucić:

function deregister_editor_expand() {
 wp_deregister_script('editor-expand');
}
add_action( 'admin_init', 'deregister_editor_expand' );

Problem z wysokością pola edycji treści:

Akurat u mnie tego błędu nie uświadczyłem, ale widziałem, że wiele osób na forach o nim wspominało. Zatem jeżeli wysokość edytora zmniejszyła się utrudniając pisanie, wystarczy poniższy kod wrzucić do functions.php:

add_action('admin_head', 'content_textarea_height');
function content_textarea_height() {
 echo'
 <style type="text/css">
 #qtrans_textarea_content_ifr{ height:420px !important; }
 </style>
 ';
}

I to w zasadzie tyle, jeżeli mieliście jeszcze jakieś przygody z qTranslate, to śmiało opisujcie je w komentarzach.

Co zamiast qTranslate?

Już miałem kończyć wpis, ale pomyślałem że jeszcze podzielę się z Wami dwoma rozwiązaniami, które obecnie stosuję dla wielojęzycznych stron:
* Wtyczka WPML – ferrari wśród wtyczek tego typu, kosztuję również jak ferrari, ale na pewno się nie zawiedziecie.
* WordPress Multisite – czyli wielojęzyczność bez konieczności instalacji pluginów. Rozwiązanie szczególnie dobre, jeżeli różne wersje językowe strony różnią się od siebie.