Hvordan tilpasse og gjøre endringer i Vipps for WooCommerce-pluginen?

Sist oppdatert:

Vi har da forsøkt å legge til nok filtere og hooks i utvidelsen slik at dette skal være mulig å gjøre med tilpasninger enten i en plugin eller i ditt theme’s “functions.php”-fil.  Dette krever da selvfølgelig programmering – men du kan da gjøre endringene som en del av din butikk eller theme, og på en måte som vil virke selv når utvidelsen oppdateres.

Praktiske ting

Først, hvis du ikke selv kan programmere: Finn en utvikler. Selv om du kan få ferdige ‘programsnutter’ til å lime inn i malen din er det sjelden en god idé å legge dette til uten at du vet nøyaktig hva de gjør – eller at du har en rask mulighet til å fjerne dem hvis noe virker anderledes enn du trodde.  Heldigvis er det relativt lett å finne utviklere til WordPress.

Dernest: Hvis ikke endringene er helt trivielle, vil vi anbefale at du gjør endringene dine i en utviklingssite istedetfor på “live”-siten din. Ta kontakt med hosting-leverandøren din for å få satt opp et slik.  Hvis noe går galt og du ender opp med nedetid, så vil det da ikke påvirke butikken din.

Du kan gjøre endringene dine enten i malen din eller i en egen plugin. For de fleste vil det være enklest å gjøre det i malen; men vi anbefaler da at du lager deg et “child-theme” for å gjøre endringene slik at ikke endringene blir overskrevet neste gang du oppdaterer themet, hvis du ikke har en fra før.  De fleste endringene kan da gjøres direkte i malens “functions.php”-fil.

Filtere og Actions

I WordPress så er det slik at plugin-utvikler typisk lager ‘hooks’ der du som utvikler/butikkeier kan gjøre endringer.  Disse finnes i to varianter, “actions” som blir kallet når noe skjer i koden, og “filtere”, som tar i mot en verdi som foreksempel HTML’en til kjøpeknappen og er ment å returnere en ny knapp. Vi har listet opp alle disse i filen “readme.txt”  i utvidelsen, men her er noen eksempler på bruk:

 Legg til logging av callback fra Vipps:  Action ‘woo_vipps_callback’

Handlingen ‘woo_vipps_callback’ blir kallet når resultatet av en betaling sendes tilbake til butikken. Her kan det av og til være greit å legge til ekstra logging for å løse problemer med frakt eller lignende.  Du kan gjøre dette slik:

add_action('woo_vipps_callback', 
 function ($result) { 
     global $Vipps;
     $Vipps->log("Callback fra Vipps!", 'debug');
 }
);

Dette vil kjøre hver gang en callback kommer fra Vipps; og vil logge til WooCommerce-loggen som du kan lese i WooCommerce/Status/Logger i admin-sidene.

Skifte template på “Vipps”-sidene: Filter ‘woo_vipps_special_page_template’

De spesielle sidene som pluginen lager når den venter på respons fra Vipps, eller når den forbereder ordrene, er laget på en måte som bruker standard-template på sidene dine. Men disse kan foreksempel ha sidebars eller lignende som ikke passer så bra.  Dette filteret vil erstatte template med en du har i ditt eget theme – navnet her er bare et eksempel. I motsetning til ‘action’-en over så må du her returnere en verdi-  altså stien til templaten du vil bruke.

add_filter('woo_vipps_special_page_template', 
    function ($template, $specialPage) {
        $local = locate_template(array('template-fullwidth.php'));
        if ($local) $template = $local;
        return $template;
}, 10, 2);

Filteret erstatter ‘standard’ template med template med navn “template-fullwidth.php” om den finnes i themet.  Filteret tar to argumenter;  gjeldende template og navn på den ‘spesielle’ siden, så her må man legge til filteret med prioritet (10) og antall argumenter (2).

Endre transaksjonsteksten som vises i Vipps-appen ved kjøp:  Filter ‘woo_vipps_transaction_text’:

Et lignende eksempel som endrer teksten som vises i selve skjermen på vipps-appen når du kjøper:

add_filter('woo_vipps_transaction_text', function ($text, $order) {
 return "På forhånd takk for betalingen for ordre nr. " . $order->get_id();
}, 10,2);

Det er ikke så mye plass, men du trenger ihvertfall ikke nøye deg med standardteksten.

Mangler det filtre og actions?

Om du trenger å gjøre en tilpasning, og du ikke finner filteret eller action’en du trenger hverken i readme.txt eller i koden, så ta gjerne kontakt og fortell oss hva du trenger. Det er viktig for oss at uviklere får de verkøyene de trenger for å bruke denne pluginen til å lage en vellykket butikk.

Andre tilpasningsmetoder

I tillegg til tilpasning med hooks og filtere, så kan du typisk endre på utseende på knapper og slikt simpelthen ved å endre stylesheetet i din butikks mal. Her gjelder samme varsko om å bruke et child-theme. Siden versjon 1.1.13 vil du også kunne gjøre endringer i som blir utført i Javascript ved å legge til dine egne funksjoner. Vi bruker her det nye (fra WP 5.0.0 av) systemet “wp-hooks” som har nesten samme grensesnitt som standard WP-hooks – men det er ikke så mange av dem ennå.  Vi har lagt til bakoverkompatibiltet til versjon 4.7; og om du ser behovet for flere hooks også her, så ta gjerne kontakt.