Arhiva de etichete: php

Conflicte și finețuri

Totul a-nceput de la o problemă reclamată de un utilizator pe pagina modulului WP Trip Summary (plus capturi de ecran aici). Mi-a luat mult să-mi dau seama care era cauza, anume un conflict între două versiuni de Leaflet JS: una inclusă de WP Trip Summary, alta inclusă de Waymark.

Cea efectiv folosită era, evident, ultima dintre ele două versiuni (în cazul nostru, ținând cont de ordinea de execuție, versiunea din WP Trip Summary). Deci Waymark utiliza o versiune și o instanță diferite de Leaflet JS. Pe lângă diferența de versiune-n sine (care putea sau nu să fie o problemă), se pierdeau, evident, și plug-in-urile înregistrate de Waymark.

Conflicte...

Conflicte…

Miza reală a soluției nu era musai rezolvarea interacțiunii cu Waymark, important aspect așa cum era, cât asigurarea faptului că nu va mai intra în atari conflicte pe viitor, menținând un grad de izolare care să:

asigure mediul de execuție pe care l-am configurat (versiunea de Leaflet JS dorită + plug-in-urile Leaflet JS înregistrate, cu exact versiunile cerute de modul);
nu interfereze cu mediile de execuție ale altor module, chiar dacă acele module nu și-au luat la rândul lor modalități de protejeare a propriilor dependințe.

Citește mai departe

WP Trip Summary 0.3.1 – SG-1

Trebuia să fie versiunea 0.2.9 și chiar a fost, însă am dat succesiv de două probleme: una legată de denumirea unui folder, care trebuia să înceapă cu literă mică și, în kitul de instalare, începea cu literă mare (0.3.0); cealaltă, ceva mai subtilă și care se pare că depinde de versiunea de PHP și pe care am redat-o la finalul articolului ca trivia (0.3.1).

Acestea fiind spuse, a mai trecut un an în care n-am prea avut timp să mă ocup, dar în care tot am făcut câte ceva. Am păstrat oarecum schema de denumire, numai că de data asta am sărit puțin în afara regulii și-am numit-o…. SG-1. Cine știe, cunoaște. După cum se vede, am schimbat și logo-ul.

Noutățile funcționale semnificative sunt, de fapt, doar una: inspirat din sugestia cuiva de pe pagina modulului, am implementat o funcție de jurnalizare. Adică în cadrul unui post poți face un jurnal cu cine a parcurs acel traseu și-n ce condiții (cu ce vehicul, echipament, când, cât a durat etc.).

Non-funcțional, am reușit să refactorizez clasa care gestiona instalarea modulului obținând dintr-o singură clasă toată această structură. Am fost impulsionat să fac modificarea pentru că ajunsese ridicol de mare până-n punctul în care-ar fi putut deveni de neîntreținut. Strict vorbind, nu era musai necesar să se-ntâmple chiar acum, atâta doar c-am preferat să o fac într-o versiune fără mize foarte mari.

Citește mai departe

Afișarea denumirii și adresa locker-ului EasyBox folosind modulul oficial SameDay pentru WooCommerce

Pe lângă problema cu netrimiterea datelor locker-ului EasyBox ales, mai este loc de o îmbunătățire a ergonomiei modulului SameDay pentru WooCommerce: afișarea informațiilor locker-ului ales (nume și adresa) atunci când se afișează detaliile comenzii (în e-mail-ul de confirmare, panoul de administrare, contul de client etc.).

Clarificări

Clarificări

Motivele sunt evidente, așa că o să trec direct la descrierea soluției, adăugând doar că premisele de la care plec sunt:

– că oriunde este afișata metoda de transport asociată unei comenzi trebuie să fie afișate și aceste informații;
– că există doar o metodă de transport pentru o comandă.

Citește mai departe

Please choose your EasyBox Locker!

Eroarea din titlu am primit-o lucrând la un magazin virtual peste WooCommerce, având instalat modulul de livrare prin SameDay (problemă pe care au mai întâlnit-o și alții). Ei, cu toate că este selectat locker-ul la care să fie livrată comanda, modulul emite acest mesaj. Pentru început, am aruncat un ochi în codul sursă al modulului:

Sursa erorii

Sursa erorii

Cu alte cuvinte, se purta ca și cum datele nu ar fi fost trimise deloc. Să consultam și globul de cristal, adică Developer Tools – Network. Șoc sau nu, o să-ți vină sau n-o să-ți vină să crezi așa ceva, dar datele nu erau acolo deloc. Voilà, precum zăpezile anului trecut, precum bunul simț la ecologiști, imposibil de găsit:

Citește mai departe

Cum activezi livrarea automată în WooCommerce pe baza unui produs anume

Dacă te-ai întrebat cum poți implementa acordarea de transport gratuit cu titlu promoțional, atunci când un client adaugă în coș un produs marcat anume în acest scop, are să te cuprindă mirarea aflând (dar află oricum) că ai două modalități. Una mai grea, alta mai ușoară.

Mai greu

Calea mai dificilă și (probabil) mai interesantă pentru utilizatorii care știu un pic de programare și, eventual, pentru programatorii care știu un pic de programare este să-și scrie singur propriul modul, idee pe care o vom urmări mai jos.

Ilustrație de BZ

Ilustrație de BZ

O soluție, probabil nu singura, dar, în orice caz, cea care a funcționat pentru mine și pe care am folosit-o este folosirea noțiunii de clasă de transport disponibilă în WooCommerce pentru a marca produsul sau produsele care acordă favorul de transport gratuit.

Citește mai departe

WP Trip Summary 0.2.8 – Emil Racoviță

După aproape doi ani de pauză (în care totuși am lucrat un pic), am reușit în sfârșit să lansez versiunea 0.2.8, denumită Emil Racoviță (mi-am propus să denumesc fiecare versiune după câte un explorator sau cartograf).

Nu sunt salturi spectaculoase și, de altfel, nici nu mi-am propus să procedez așa, dar, în primul rând, am reparat câteva dume:

avertizări care apăreau în consola browser-ului din cauză că includeam o serie de fișiere javascript acolo unde nu era cazul;
am reparat punctual librăria MysqliDb, care genera avertizări pentru o utilizare incorectă în versiunile mai noi de PHP a funcției implode;
– am reparat câteva probleme cu blocul de shortcode: o dată că nu era afișat (uneori) în selectorul de blocuri din editor, apoi că nu era redat (alteori) în pagina articolului.

Apoi, am adus și câteva îmbunătățiri:

– am adăugat două link-uri în pagina de listare a plug-in-urilor, pe rând-ul corespunzător acestui plug-in: unul către pagina de configurare, altul către pagina de mentenanță;
– se pot adăugat date structurate în format JSON-LD, pentru articolele care au un track GPS atașat folosind acest plug-in;
– am adăugat o pagină de mentenanță, prin care, momentan se pot efectua următoarele operațiuni: ștergerea cache-ului de track-uri GPS, ștergerea tuturor datelor gestionate de acest plug-in (mai puțin nomenclatoarele și opțiunile de configurare, evident) și, în sfârșit, găsirea articolelor care ar trebui să aibă track-uri GPS atașate, dar fișierele corespunzătoare lipsesc de pe disc;
am adăugat informații de auditare pentru cine și când a modificat ultima oară datele gestionate de acest modul, pentru fiecare articol în parte;
– am adăugat un câmp suplimentar la setul de date returnate de WordPress pentru un articol prin API-ul REST (/wp-json).

Citește mai departe

Asistent de cronicar – WP Trip Summary

Chiar dacă sunt cam într-o ureche, nu sunt tocmai vreun soi de Grigore Ureche. Nici vreun Herodot nu-s, nici chiar al doilea Ptolemeu. Iar blog-ul este orice, mai puțin un letopiseț, poate un jurnal, ori un laborator degenerat, nicidecum un atlas, nici măcar un ghid.

WP Trip Summary

WP Trip Summary

Dar, iată, am avut oricum nevoie de o modalitate de-a consemna, cu cap și coadă, câteva aspecte prozaice, fără a fi nevoit să le includ de fiecare dată-n text, probabil căzând în doaga unui stil mult prea gazetăresc. La drept vorbind, probabil aș fi putut include direct un panou din Strava sau Bikemap, dar ideea nu m-a încântat, căci trebuia să arate cât mai organic și nici nu-mi surâde ideea de a fi dependent de un terț serviciu.

Citește mai departe