Od kilku dni testuje różne rozwiązania, których celem jest większe zróżnicowanie ruchu ma stronie (czytaj: większa niezależność od ruchu z Google i Facebooka). Jednym z takich działań jest większy nacisk na Newsletter, który niebawem powinien troszkę zmienić swój charakter, i docelowo chciałbym by zapewnił dodatkowy ruch na stronie. Przy tek okazji testuje różne wtyczki, zarówno do samego newslettera, jak i wspierające. Jedną z takich wtyczek jest Bloom od Elegant Themes, który odpowiada za wyświetlanie okna z formularzem zapisu. Wtyczka sprawuje się dobrze, poza dwoma drobiazgami…

Krótkie kody (shortcode) we wtyczce Bloom

Brakuje mi całkowicie czystego (pustego) motywu, oraz obsługi krótkich kodów (shortcode) w treści okna. Pierwsze można uzyskać „bawiąc się” kodem CSS, drugie wymaga już bezpośredni ingerencji w kod wtyczki.

Wprawdzie wtyczka Bloom posiada zintegrowaną obsługę całkiem pokaźnej liczby dostawców usług typu „e-mail marketing” (i kilku wtyczek), to na tej liście nie ma ani obecnie używanej przeze mnie wtyczki, ani tej, która aktualnie testuje, jako ewentualną alternatywę. Na szczęście można skorzystać z własnego kodu formularza, czyli HTMLa wklejonego w odpowiednie pole. Takie połączenie działa nawet sprawnie, choć wymaga odrobiny „dopieszczenia” w CSSie.

Sytuacja komplikuje się w momencie, gdy nie ma prostego sposobu na wygenerowanie kodu HTML formularza, za to mamy dostępną obsługę krótkich kodów (shortcode). Komplikuje się, bo Bloom natywnie nie obsługuje ich w treści okna:

W powyższym przykładzie widać przygotowany na szybko własny krótki kod, który pojawia się zamiast przypisanej do niego treści:

To jest oczekiwany tekst, czyli shortcode działa.

Na obecną chwilę chyba jedyne rozwiązanie tego problemu, to bezpośrednia ingerencja w kod samej wtyczki, czyli rozwiązanie za którym nie przepadam (więcej o tym za chwilę), ale czasem nie ma wyjścia. W tym konkretnym przypadku, by dodać obsługę krótkich kodów do wtyczki Bloom musimy w pliku „bloom.php” odszukać linijkę:

? stripslashes( html_entity_decode( $details['custom_html'], ENT_QUOTES, 'UTF-8' ) )

W moim pliku jest to wiersz 3871, ale dla ułatwienia dodam, że jest tylko jeden taki zapis w tym pliku. Powyższą linijkę zmieniamy na:

? do_shortcode( stripslashes( html_entity_decode( $details['custom_html'], ENT_QUOTES, 'UTF-8' ) ) )

Od tego momentu krótkie kody powinny być już obsługiwane:

Ale tak jak wcześniej napisałem, nie jest to rozwiązanie idealne, bo każda bezpośrednia modyfikacja plików wtyczki (i motywu, jeśli nie korzystamy z motywów potomnych) zniknie, jak tylko dokonamy jej aktualizacji. Dlatego dużo lepszym rozwiązaniem jest korzystanie np. z pliku „functions.php” (oczywiście motywu potomnego), w którym tego typu zmiany możemy dokonywać bez ryzyka, że pewnego dnia, po aktualizacji znikną. Niestety, obecnie w przypadku tej konkretnej modyfikacji wtyczki Bloom takiej możliwości nie ma, stąd zdecydowałem się na „mniej eleganckie” rozwiązanie.

Ale by zrównoważyć to, że po aktualizacji wtyczki modyfikacja zniknie, postanowiłem skorzystać z polecenia „replace”, które dzięki harmonogramowi zadań (CRON) będzie czuwać, czy w pliku „bloom.php” znajduje się odpowiedni zapis:

*/5 * * * * root replace "? stripslashes( html_entity_decode( \$details['custom_html'], ENT_QUOTES, 'UTF-8' ) )" "? do_shortcode( stripslashes( html_entity_decode( \$details['custom_html'], ENT_QUOTES, 'UTF-8' ) ) )" -- /var/www/webinsider/wp-content/plugins/bloom/bloom.php >/dev/null 2>&1

Powyższa linijka dodana do systemowego CRONa na serwerze (plik „/etc/crontab”) uruchamia co 5 minut polecenie „replace”, które w razie konieczności dokona odpowiedniej podmiany zawartości pliku wtyczki.

(!) Zgłoś błąd na stronie
Potrzebujesz profesjonalnej pomocy? Skontaktuj się z nami!
Spodobał Ci się artykuł? Zapisz się do naszego Newslettera - ZERO SPAMu, same konkrety, oraz dostęp do dodatkowych materiałów przeznaczonych dla subskrybentów!
Na podany adres e-mail otrzymasz od nas wiadomość e-mail, w której znajdziesz link do potwierdzenia subskrypcji naszego Newslettera. Dzięki temu mamy pewność, że nikt nie dodał Twojego adresu przez przypadek. Jeśli wiadomość nie przyjdzie w ciągu najbliższej godziny (zazwyczaj jest to maksymalnie kilka minut) sprawdź folder SPAM.
Monika ćwiczy przed kongresem ko..., ale zapisała się do Newslettera WebInsider.pl, choć... i tak nic nie widzi
WebInsider poleca księgowość wFirma
WebInsider korzysta z VPSa w HitMe.pl
WebInsider poleca VPSy DigitalOcean
WebInsider poleca serwis Vindicat
Napisz komentarz
wipl_napisz-komentarz_01Jeśli informacje zawarte na tej stronie okazały się pomocne, możesz nam podziękować zostawiając poniżej swój komentarz.

W tej formie możesz również zadać dodatkowe pytania dotyczące wpisu, na które – w miarę możliwości – spróbujemy Ci odpowiedzieć.
Linki partnerskie
Niektóre z linków na tej stronie to tzw. „linki partnerskie”, co oznacza, że jeśli klikniesz na link i dokonasz wymaganej akcji (np. zakup/rejestracja) możemy otrzymać za to prowizję. Pamiętaj, że polecamy tylko te produkty i usługi, z których sami korzystamy, i uważamy, że są tego na prawdę warte… :-)
Znaki towarowe i nazwy marek
W niektórych wpisach (oraz innych miejscach na stronie) mogą być przedstawione/użyte znaki towarowe i/lub nazwy marek, które stanowią własność intelektualną tych podmiotów, a zostały użyte wyłącznie w celach informacyjnych.
Młody Szymon pomógł tacie zapisać się do Newslettera WebInsider.pl i... teraz idzie popływać