Mitä eri WordPress-hosting vaihtoehtoja on?

WordPress pitää asentaa omalle palvelimelleen, ellei sitten käytä esimerkiksi wordpress.com palvelua. WordPressiä voi pyörittää monenlaisissa ympäristöissä. Tällä kertaa käymme läpi, mitä vaihtoehtoja on olemassa ja mitkä niiden hyvät ja huonot puolet ovat.

Lue lisää

WordPressin haun kehittäminen

WordPressin oma oletushaku on käyttökelpoinen, mutta rajoittunut. Se tuottaa tuloksia, mutta ei tarjoa minkäänlaista säätövaraa, ei hae koko sivuston sisällöstä, eikä ymmärrä suomen kielen erityispiirteitä millään tapaa. Onneksi parempiakin vaihtoehtoja on tarjolla!

Tehdään saman tien puolueellisuus selväksi: Relevanssi-hakulisäosa on minun tekemäni, joten käsittelen asiaa nyt vain sen näkökulmasta. Muitakin vaihtoehtoja on, samassa hintaluokassa ja vastaavilla ominaisuuksilla lähinnä SearchWP, mutta amerikkalaisena tuotteena SearchWP ei luonnollisesti ole suomesta ja suomalaisten käyttäjien tarpeista samalla tavalla kiinnostunut kuin Relevanssi.

Enemmän sivustoa haettavaksi

Jos haet WordPressin oletushaulla hakusanoilla keltainen takki, WordPress palauttaa tuloksina kaikki artikkelit, joissa sanat keltainen ja takki esiintyvät joko otsikossa, otteessa tai sisällössä. WordPress osaa tehdä myös fraasihakua, eli jos haet "keltainen takki", tuloksiin tulevat vain artikkelit, joissa nämä sanat esiintyvät juuri näin peräkkäin. WordPress osaa myös järjestellä hakutulokset siten, että parhaat osumat ovat ensin.

Aina tämä ei vain riitä. Pari keskeistä ongelmaa artikkelien löydettävyyden suhteen ovat avainkentät (custom fields), lyhytkoodit (shortcodes) ja liitteet.

Jos sivun keskeinen sisältö löytyy avainkentistä tai on sillä tavalla lyhytkoodilla luotua, että tärkeimmät avainsanat eivät esiinny sivun varsinaisessa sisällössä (post_content-kentässä), WordPressin oma haku ei tätä sisältöä löydä. Advanced Custom Fieldsin käyttäjät sijoittavat usein keskeisiä osia artikkelien sisällöstä avainkenttiin.

WordPressiin on lukuisia lisäosia, jotka auttavat tässä ja tuovat suuremman osan sivustoa haettavaksi osaksi WordPressin omaa hakua, mutta luonnollisesti myös varsinaiset hakulisäosat osaavat tuoda kaiken tämän sisällön osaksi hakua.

Relevanssi Premium ja SearchWP tarjoavat lisäksi mahdollisuuden päästä käsiksi liitetiedostojen sisältöön. Jos Mediakirjastossasi on PDF-tiedostoja, Office-dokumentteja tai muuta vastaavaa aineistoa, näiden sisältö on luettavissa ja sisällytettävissä hakuun. Tiedostojen on oltava Mediakirjastossa, jotta niihin päästään käsiksi, mutta ainakaan Relevanssi ei sen jälkeen välitä, onko itse tiedosto WordPressin hakemistorakenteessa vai esimerkiksi jossain pilvipalvelussa.

WooCommerce ja muut verkkokaupat

WooCommerce-kaupoissa tavanomainen esimerkki kadoksissa olevasta tiedosta on tuotekoodi eli SKU, joka on avainkentässä, eikä siten oletuksena haettavissa. Myös monet tuotetiedot, avainsanat ja tuotteiden arvostelut (eli kommentit) jäävät haun ulkopuolelle, vaikka niissä olisi monesti hyvin tärkeää ja tarpeellista tietoa helpottamaan oikeiden tuotteiden löytymistä.

Relevanssi tukee WooCommercen perusominaisuuksia sellaisenaan ja paljon muutakin on mahdollista viritellä. Jos käyttää muunnelmatuotteita (product variations), Relevanssi on mahdollista säätää sisällyttämään muunnelmatuotteen tietoja osaksi päätuotetta, jotta oikea tuote löytyy myös silloin, kun haetaan vaikkapa muunnelmatuotteen ominaisuudella tai SKU:lla.

Toimivammat hakutulossivut

Sekä Relevanssi että SearchWP eivät varsinaisesti esitä hakutuloksia: se on edelleen teemasi vastuulla. Relevanssin tai SearchWP:n käyttöönotto ei siis suoranaisesti muuta hakutulossivua mitenkään, se näyttää edelleen ihan samalta kuin ennenkin. Tulokset ovat vain parempia: niihin sisältyy enemmän artikkeleita ja parhaimmat artikkelit nousevat paremmin hakutuloslistan kärkeen.

Relevanssi pystyy lisäksi parantamaan hakutulossivuja korvaamalla oletuksena näytettävät otteet Googlen tyylisillä otteilla, joihin on poimittu artikkelista sellainen osa, jossa hakulause näkyy. Näin käyttäjä saa heti paremman käsityksen siitä, vastaako artikkeli kysymykseen. Ainakin dokumentaation perusteella SearchWP ei tällaista ominaisuutta tarjoa. Relevanssilla on tarjota myös Googlen tyyliin ”Tarkoititko tätä”-vinkkejä kirjoitusvirheiden kohdalla ja ”Puuttuvat sanat”-ominaisuus jos käyttäjä hakee useammalla sanalla, eikä artikkelissa esiinny näitä kaikkia sanoja.

Suomen kielen erityispiirteet

Suomi on haun näkökulmasta hankala kieli, kiitos lukuisten taivutusmuotojen. WordPressin omakin haku selviää osasta taivutusmuotoja: jos artikkelissa lukee ”takkiin” ja käyttäjä hakee ”takki”, haku osuu kyllä. Toisin päin ei sitten toimikaan, eli WordPressin oma haku löytää osamerkkijonot (vähän liiankin hyvin: hakemalla ”kana” löytyy myös ”lakanakangas”), mutta ei tietenkään pysty palauttamaan ”takkiin”-sanaa perusmuotoonsa ja löytämään sillä artikkelia, jossa lukee ”takki”.

Relevanssi pystyy tähän, toisin kuin moni muu haku. Relevanssikaan ei osaa tehdä varsinaista perusmuotoistamista (Johannes Siipola on kehittänyt tähän ratkaisun SearchWP:lle ja Relevanssille, mutta siinä on omat hankaluutensa), mutta Relevanssi Premiumiin on saatavilla oikein toimiva suomenkielinen stemmeri, joka osaa vääntää suomen eri taivutusmuodoissa olevia sanoja juurimuodoikseen. Sen myötä suomenkielinen hakeminen muuttuu helpommaksi: ”takki”, ”takin”, ”takkiin”, ”takista”, ”takkeihin” – kaikki nämä muodot ovat jatkossa yhdenmukaisia haussa, eli haku millä tahansa näistä löytää kaikki muutkin.

Todella isot tietokannat

Jos sivusto on niin iso, että WordPressin oma oletushaku on liian hidas ja haut kestävät jopa kymmeniä sekunteja – tässä puhutaan sadoista tuhansista artikkeleista – voi hyvin olla, että Relevanssillekin sivusto on liian raskas. Ainakin Relevanssin indeksistä tulee tämän kokoisella sivustolla todella epäkäytännöllisen suuri.

Näihin tapauksiin tepsii Relevanssi Light. Se säätää WordPressin tietokannan asetuksia niin, että hausta tulee huomattavasti aikaisempaa nopeampi ja tuloksista laadukkaampia. Juuri muuta se ei sitten teekään, eli kustomointia ja muita ominaisuuksia ei ole juurikaan tarjolla.

Relevanssi Light mahdollistaa kuitenkin pienissä määrin lisäsisällön lisäämisen hakuun, eli esimerkiksi kauppaan on kyllä mahdollista saada SKU:t osaksi hakua myös Relevanssi Lightillä. Jos sivusto on todella iso ja käytössä on riittävän moderni MySQL- tai MariaDB-tietokanta, Relevanssi Lightiä nopeampaa hakua ei tietääkseni ole mahdollista saada ainakaan ilmaiseksi.

Jos rahaa on käytettävissä, isojen sivustojen kohdalla kannattaa harkita myös sivuston ulkopuolista hakua. Tällaista tarjoavat vaikkapa kotimainen Valu Search, Jetpack Search ja Algolia. Nämä ovat järjestään melko kalliita ratkaisuja: halvimmillaankin näissä puhutaan satasista vuodessa, mutta jos sivusto on aidosti iso, hinta voi olla tuhansia euroja vuodessa. Jos tällaiseen on varaa, kannattaa näitäkin vaihtoehtoja harkita.

Elastic Search on sitten se todellinen raskaan sarjan leka, joka on teoriassa ilmainen open source -tuote, mutta käytännössä vaatii sen verran osaamista, että käy todella kalliiksi.

Tiivistelmä

Useimmat sivustot, joilla on runsaasti artikkeleita, hyötyvät jonkinasteisesta haun parantamisesta. Relevanssi Lightin asentaminen on erittäin vaivatonta, siinä ei ole lainkaan asetuksia säädettäväksi, ja sillä saa nopeamman ja parempia tuloksia tarjoavan haun hyvin plug’n’play-henkisesti. Käyttäisin siis minimissään sitä, jos sivustolla ylipäänsä hakua käyttäjille tarjoaa.

Jos on halukas näkemään hieman enemmän vaivaa, mutta ei halua käyttää rahaa, Relevanssin ilmaisversiota on vaikea päihittää. Asetusten säätämisessä on oma vaivansa, mutta oletusasetuksilla pääsee jo pitkälle, eikä asetuksia tarvitse säätää kuin kerran, ja sen jälkeen parempi haku rullaa ilman erillistä vaivannäköä. Vaivan palkkana on parempi haku ja käytännöllisemmät hakutulokset.

Jos tarvitsee enemmän ominaisuuksia, kuten PDF-tiedostojen sisällöstä hakemista, tai haluaa apua haun virittelemiseen, kannattaa valinta tehdä SearchWP:n ja Relevanssi Premiumin välillä. Molempien ominaisuudet ovat samankaltaiset, kummallakin on hyvä asiakaspalvelu ja hinnoittelukin on aika samansuuntainen: kummankin saa edullisimmillaan 99 dollarilla vuodeksi – Relevanssista tosin saa 99 dollarilla kaiken, SearchWP:n käyttö esimerkiksi WooCommercen kanssa vaatii 199 dollarin Pro-lisenssin hankkimista.

Kumpi näistä sitten on parempi? SearchWP:n käyttöliittymä on hiotumpi ja se tekee jotkut jutut Relevanssia paremmin. Relevanssi on taas edistyneempi toisissa asioissa ja insinöörimäisemmän käyttöliittymän vastapainoksi erilaisia kustomointimahdollisuuksia on devaajille koodin puolella tarjolla enemmän. Relevanssi hallitsee suomen paremmin, on kotimainen Koodia Suomesta -tuote ja asiakaspalvelukin vastaa kysymyksiin keskimäärin alle tunnissa suomeksi.

Esimerkkejä

Jos haluat kokeilla Relevanssilla toteutettua hakua käytännössä, voit hakea kirja-arvosteluja Kirjavinkit.fi:stä tai lautapelijuttuja Lautapelioppaasta. Molemmissa on käytössä suomenkielinen stemmeri, joten erilaisten taivutusmuotojen käyttö hakusanoina onnistuu.

Katsotaan vertailun vuoksi Lautapelioppaan hakua ilman Relevanssia ja Relevanssin kanssa. Hakusanana on “knizia”, jolla halutaan löytää tietoa pelisuunnittelija Reiner Kniziasta ja tämän suunnittelemien pelien arvosteluja.

WordPressin oletushaku ei ihan palvele. Paras osuma, Reiner Knizia -tietosivu, on Lautapelioppaassa toteutettu Reiner Knizia -pelisuunnittelijataksonomiatermin arkistoksi, joten sitä ei WordPressin oma haku edes pysty löytämään. Tulosjoukon kärkeen nousee myös jotain kymmenen vuotta vanhoja uutisia.

Relevanssin kanssa tulos näyttää tuntuvasti paremmalta. Kärkeen nousee se tärkein tulossivu ja muutenkin tulosten kärjessä on peliarvosteluita ja tuoreita uutisjuttuja. Hakua on muokattu asetusten säätämisen lisäksi koodissa funktiolla, joka lisää uusille jutuille dynaamista lisäpainoa, jonka määrä hiipuu jutun vanhetessa. Lisäksi peliarvostelukategorian jutuille on annettu lisäpainoa.

Kirjavinkit.fi:ssä jutut ovat kirja-arvioita ja hakuun on otettu mukaan myös taksonomiatermejä (kirjailijoita, kirjasarjoja, tapahtumapaikkoja, kirjoissa esiintyviä henkilöitä ja niin edelleen). Näitä ei kuitenkaan haluta varsinaisiin hakutuloksiin kirja-arvioiden sekaan, vaan ne on nostettu hakutulosten alkuun tiiviimmässä muodossa erilliseen listaan. (Jos tällaisen ratkaisun toteuttaminen kiinnostaa, olen kirjoittanut siitä ohjeen omaan blogiini.)

Tämä artikkeli on vieraskirjoitus – Artikkelin kirjoittaja on: Mikko Saari joka on kehittänyt WordPress lisäosan ”Relevanssi” jonka avulla WordPressin hakua voi parantaa huomattavasti.

Custom CSS perusteet WordPressin parissa – Aloittelijataso

Livestriimissä 5.5.2021 kävimme läpi CSS:n lisäämistä, muokkausta ja käyttöä täällä WordPress maailmassa. Videosta saat napattua hyvät vinkit omaan käyttöön jossa lähdetään ihan perustasolta liikkeelle muokkailemaan sivuja yleisellä tasolla.

Aiheet:

0:16​ Mitä CSS on ja mitä sillä tehdään?
2:00​ Miten tutkitaan koodia Chromen inspectorilla
7:12​ Helppo tapa kohdistaa koodi suoraan tiettyyn classiin
8:50​ Miten tarkistat toiselta sivustolta helposti mm. Värikoodit, Fontit ja fonttikoot
12:37​ Kadence WordPress teeman muokkaaminen CSS:n avulla
15:43​ Kuinka lisäät CSS-lisäluokan Gutenberg editorissa sarakkeeseen
16:20​ CSS-lisäluokkien yleiset nimeämisohjeet
17:28​ CSS:n lisääminen WordPress mukauttimen kautta – Oma CSS moduulia käyttäen
19:12​ Saman classin käyttäminen muissa kohdissa WordPress sivulla
21:52​ Oma CSS kohta vs Lapsiteemassa CSS – Miksi ja milloin?
25:27​ Miksi kannattaa käyttää tiettyä rakennetta lisätessä CSS-koodia sivustolle?
26:16​ Koodin kommentointi – Miten ja miksi?
27:58​ CSS:n lisääminen lapsiteemaan
29:42​ Otsikoiden koon muokkaaminen globaalisti CSS:n avulla
32:02​ Tekstikoon muokkaaminen CSS:n avulla
33:03​ CSS:n no no – Huomiot kokemuksen perusteella
35:20​ Miten tehdään eri levyisille päätelaitteille omia tyylejä media queryjen avulla?
38:30​ Elementtien piilottaminen CSS:n avulla ja vinkit milloin sitä ei kannata tehdä
47:45​ Miksi CSS kannattaa lisätä vain yhteen paikkaan WordPressissä?
51:49​ Mikä ero on theme CSS:llä ja Additional CSS:llä?
53:15​ Miksi CSS voi näkyä omalla sivustollasi yhtenä pötkönä?
56:28​ Kannattaako käyttää erillistä lisäosaa – Lisäämään CSS:ää sivustolle?

Lisätietoa ja työkaluja CSS:än opiskeluun löytyy mm.:

WordPress lapsiteema selitettynä – Sisältää ohjeen!
CSS selector reference – W3Schools
FreeCodeCamp
MDN Web Docs
CSS-Tricks
Media Queryt

Järjestäjät ja kommentaattorit:

Laura Jalonen – https://jaloin.fi
Jaakko Pöntinen – https://mooses.fi
Mikko Mörö – https://sivuseppa.fi
Niko Vittaniemi – https://innovitale.com/

WooCommercen kassan muokkaus – Digitaalisille tuotteille

WooCommercen kassa on suunniteltu käytännössä fyysisille tuotteille pääasiassa, joten kassalla tulee myös näkyviin osoitetiedot, maa yms. Mitkä ei taas ole tarpeellisia, jos myynnissä on pelkästään digitaalisia tuotteita.

Tässä ns. Normaali WooCommercen kassa ilman mitään muokkauksia

Digitaalisten tuotteita myydessä voidaan yksinkertaistaa WooCommercen kassaa

Digitaalisten tuotteiden myynnissä tarvitaan oikeastaan vain: Etunimi, Sukunimi ja Sähköpostiosoite.

Itse tykkään myös jättää tilauksen kommentit, jos mahdollisella asiakkaalla nyt sattuu jotain tulemaan mieleen on hänellä paikka johon vielä kirjoitella lisäinfoa.

Käytämme tätä samaa tapaa kassan yksinkertaistamisessa verkkokurssien supermarketissa – verkkokurssille.fi sivustolla.

Tässä kuva simppelimmästä kassasta – Digituotteiden myyntiin

Muutoshan onnistuu seuraavalla koodinpätkällä:

Mihin koodi kuuluu? Koodin voi laittaa lapsiteeman functions.php tiedostoon jonka löydät Ulkoasu > Teemaeditori > Functions.php alta.

/**
 * @snippet       WooCommercen kassa muokkaus - Digitaalisille tuotteille
 * @author        Niko Vittaniemi - WPWoofi.com
 * @testedwith    WooCommerce 5.1.0
 */
 
add_filter('woocommerce_billing_fields','wpwoofi_custom_billing_fields');
function wpwoofi_custom_billing_fields( $fields = array() ) {

	unset($fields['billing_company']);
	unset($fields['billing_address_1']);
	unset($fields['billing_address_2']);
	unset($fields['billing_state']);
	unset($fields['billing_city']);
	unset($fields['billing_phone']);
	unset($fields['billing_postcode']);
	unset($fields['billing_country']);

	return $fields;
}

Lisätietoa: Jos haluat opiskella enemmänkin WooCommercen kassan muokkausta suosittelen tsekkaamaan BusinessBloomerin artikkeleita aiheesta.

https://www.businessbloomer.com/woocommerce-checkout-customization/
https://www.businessbloomer.com/woocommerce-visual-hook-guide-checkout-page/

WooCommerce – ALV-raportit kirjanpitäjälle

Ryhmässä ja verkkokauppiaiden kanssa on tullut monesti esiin ALV-raportit jotka tulee toimittaa kirjanpitäjälle kuukausittain. Yleinen käytäntö kun käytetään esim. vain yhtä maksutapaa on se että toimitetaan maksupalveluntarjoajan kuten OP Payment Service, Paytrail, Visma tai Klarna ALV-raportti suoraan kirjanpitäjälle.

Mutta mitä jos käytätkin useampaa maksupalveluntarjoajaa, maksupalveluntarjoaja ei tarjoa ALV-raportteja ollenkaan tai käytät perinteistä tilisiirtoa?

Meidän suomalaisten tarpeisiin ALV-raportit on hieman erit kuin muualla koska meillä pitää myös eritellä myynnit verojen mukaisesti. Kuin myös vielä listata kaikki tilaukset ja yksilöidä nämä eri alvien mukaisesti.

Tämä on aiheuttanut haastavuutta verkkokauppiaille täällä suomessa koska näin tarkkaa erittelyä ei suorilta ole sisäänrakennettu WooCommerceen yhtenä simppelinä raporttina. Mutta nyt se on mahdollista! Marko vinkkasi ryhmässä lisäosasta joka ratkaisee ongelman.

Lataa WooCommerce Accounting Report lisäosa

Lataamisen ja lisäosan aktivoinnin jälkeen klikkaa: WooCommerce > Raportit > Accounting Report ja valitse haluamasi ajanjakso.

Lataa WooCommercen ALV-raportti ja toimita se kirjanpitäjälle

Kun olet valinnut haluamasi ajanjakson voit napata yläkulmasta ”Vie CSV-tiedosto” näppäintä josta koneelle latautuu tiedosto taulukkomuodossa. Toimita tämä tiedosto kirjanpitäjälle ja jatka kauppaa!

CSV:n aukaiseminen Excel käyttäjille

Jos käytät Microsoftin Exceliä ja avatessasi tiedostoa kaikki tieto tulee yhteen pötköön. Kyseessä on excelin ominaisuus joka ei osaa suorilta avata kyseistä tiedostoa oikein. Saat kuitenkin kyseisen dokumentin avattua seuraavasti.

Avaa Excel ja klikkaa: Aloitus > Tyhjä työkirja > Tiedot > Tekstistä tai CSV:stä > Valitse ladattu tiedosto.

Varmista että tiedot tunnistetaan oikein. Tiedoston alkuperä tulisi olla: 65001: Unicode (UTF-8) ja Erotin: Pilkku.

Voila! Toivottavasti tästä artikkelista on hyötyjä sinulle! Jos haluat tietää lisää WooCommercesta ja veroista klikkaa tästä. Tämä on aika suosittu aihe meillä ryhmässä! :)

Skyverge woocommerce pluginit

SkyVergen WooCommerce-osaamista – ilmaiseksi

SkyVerge on WooCommerce-lisäosien kehittäjä. Merkittävä osa WooCommercen omassa plugin-kaupassa olevasta tarjonnasta on SkyVergen kehittämää.

Eihän tuollainen status toki ilmaiseksi heltiä, SkyVerge maksaa Automatticille takuulla kallista hintaa noin merkittävällä tavalla näkymisestä. No, se ei toki ole väärin – markkinointi maksaa, oli se hakusanamainontaa, feedissä vilkkuvia videoita tai jollakin muulla torilla – kuten WooCommercen Extensions store – näkyvillä oloa.

Varmasti on kuitenkin myös niin, että SkyVerge osaa asiansa.

Asiaan: miten niin ilmaiseksi?

No, he tarjoavat merkittävää määrää lisäosia veloituksetta. Listaankin tässä kivoja, ilmaisia SkyVergen kehittämiä lisäosia. Otsikot linkit ovat suoraan SkyVergen sivuille, embedit ovat wordpress.org:n plugin-reposta. Kaikkia SkyVergen ilmaisia lisäosia ei ole saatavissa wordpress.org:n kautta, mutta mitäpä tuosta :)

WooCommerce Customizer

  • Tässäpä eräänlainen (vähäsen turhan yleiseen tyyliin nimetty) linkkuveitsi, jolla muutella jos jotakin – kenties merkittävimpänä ominaisuutena vaihdokset tuotetyyppikohtaisiin ”Lisää ostoskoriin”-painikkeisiin niin arkisto- kuin tuotesivuillakin. Muokata voi myös tuotteiden lukumäärää per sivu ja WooCommercen sisäänrakennettua kassan kuponkitekstiä ym ym.

Product SKU Generator

  • Plugin, joka luo automaattisesti SKU:t tuotteillesi! ’Nuff said, sanois jenkki. Lue käyttöohjeet, lisäosa ohittaa Woon SKU-kentän manuaalisen täytön.

Shipping Estimates

  • Lisää toimitustavoillesi arvioitu toimitusaika. Joko päivinä esim. 2 – 4 päivää tai sitten tämänhetkiseen päivään perustuen; esim. 24.5 – 28.5.
  • Ei saatavissa Wp.orgin reposta, sääli.

Extra Product Sorting Options

  • Lisää lajitteluvaihtoehtoja kategorioissa. Esim: vaihda oletusjärjestyksen nimi, näytä alennuksessa olevat ym ym.

Remove Product Sorting

  • Poista käytöstä lajitteluvaihtoehtoja.
  • Ei saatavissa wp.orgin reposta.

New Customer Report

  • Lisää WooCommercen omaan raporttiin palaavien vs. uusien kävijöiden vertailu.
  • Ei saatavissa wp.orgin reposta.

Custom Product Tabs Lite

  • Tätä tekeviä plugineja on monelta eri tekijältä, mutta jos käytät muita SkyVergen tuotteita, synergiasyistä tämä toki kannattaa: Tuotteille custom-tabeja. Huomaa käyttäessäsi, että yksittäin lisättyjä tabeja on vaikea hallita sivustonlaajuisesti toiminnan kehittyessä.

Sequential Order Numbers

  • Siistii tilausnumerosi peräkkäisiksi, haluamillasi etu- tai takaliitteillä.

Miksi tällainen lista?

Hain itse luotettavalta tekijältä ratkaisua SKU -generointiin ja muistin, että SkyVergellä on ilmainen sellainen. Lisäksi asiakkaan sivustolla oli jo eräs toinen SkyVergen ratkaisu käytössä, joten… Synergia. Sitä kannattaa usein tavoitella.

WooCommerce muunnelmatuotteiden hinta alkaen (Muutos)

Alkuperäisesti woocommerce näyttää variaatiotuotteiden hinnat min. hinta – max. hinta. Kuten alla olevassa kuvassa näkyy.

Mitäpä jos haluammekin selkeyttää toimintaa ja näyttää vain min. hinnan ja lisätä alkaen tekstin hinnan eteen?

Muutoshan onnistuu seuraavalla koodinpätkällä. Jos haluat muuttaa tekstiä, joka tulee näkyviin verkkokaupassasi. Muuta koodissa olevaa ”alkaen:” tekstialuetta haluamasi tekstin mukaisesti.

Mihin koodi kuuluu? Koodin voi laittaa lapsiteeman functions.php tiedostoon jonka löydät Ulkoasu > Teemaeditori > Functions.php alta.

/**
 * @snippet       WooCommerce hintamuutos - Hinta alk.
 * @author        Niko Vittaniemi - WPWoofi.com
 * @testedwith    WooCommerce 4.5.2
 */

add_filter( 'woocommerce_variable_price_html', 'wpwoofi_min_max_variable_price_html', 10, 2 );
function wpwoofi_min_max_variable_price_html( $price, $product ) {
    $prices = $product->get_variation_prices( true );
    $min_price = current( $prices['price'] );

    $min_keys = current(array_keys( $prices['price'] ));
    $min_price_regular = $prices['regular_price'][$min_keys];
    $min_price_html = wc_price( $min_price ) . $product->get_price_suffix();

    if( $min_price_regular != $min_price ){ // Kun min.hinta on alennuksessa (Voidaan poistaa)
        $min_price_regular_html = '<del>' . wc_price( $min_price_regular ) . $product->get_price_suffix() . '</del>';
        $min_price_html = $min_price_regular_html .'<ins>' . $min_price_html . '</ins>';
    }
    $price = sprintf( __( 'alkaen: %1$s', 'woocommerce' ), $min_price_html );

    return $price;
}
WPWoofi yksittaisen merkkijonon pakotettu kaannos

Manuaalisia string-käännöksiä ilman lisäosaa

Olet luultavasti joskus nähnyt jossakin WordPress/WooCommerce -toteutuksessa napin, jossa on vääränkielinen teksti – tai artikkelien metatietoa, joissa lukee lukee ”By” eikä ”Kirjoittaja”? Ehkä tällainen on kerran tai kaksi piinannut sinuakin?

Hyvin laajalti käytetty apu (toimiva ja todella hyvä apu!) on esim. Loco translate -niminen lisäosa, jolla voi tehdä string-käännöksiä (string = merkkijono) lisäosien ja teemojen eri alueisiin.

Yksittäisiin tapauksiin on tosin olemassa täsmälääke, WordPressin coressa oleva gettext- filterhook.

Kopioi koodi lapsiteemasi functions.php:n jatkoksi.

/**
 * @snippet       Merkkijonojen muutokset gettextillä
 * @author        Jaakko Pöntinen - WPWoofi.com
 * @testedwith    WooCommerce 4.5.2
 */

// Aktivoidaan filter funktiolla
add_filter( 'gettext', 'mm_change_multiple_strings', 20 );
// Määritetään funktio
function mm_change_multiple_strings( $translated ) {
// Määritetään array, jossa listataan muutettavat stringit ja se, mikä tulee korvaavaksi. Muuta, poista tai kopioi lisää rivejä tarpeen mukaan - muutamia rivejä on syötetty esimerkin vuoksi.
	$text = array(
		'Näytä ostoskori' => 'Avaa kori',
		'Laskutustiedot' => 'Tilaajan tiedot',
		'Search Results for' => 'Hakutulokset',
		'Laskutusosoite' => 'Tilaajan tiedot',
		'(ei sis. alv.)' => 'alv0',
		'You searched for' => 'Etsit tätä',
	);
// Käsitellään yllä annetun arrayn mukaan
	$translated = str_ireplace(  array_keys($text),  $text,  $translated );
// Palautetaan käsitellyt tiedot
	return $translated;
}

WooCommerce – Verkkokaupan aukiolon ajastaminen

Seuraava koodinpätkä toimii erinomaisesti esimerkiksi ravintoloille jotka haluavat myydä ruokaa ulos ainoastaan ravintolan aukioloaikoina verkkokaupastaan.

Koodin tarkoituksena on ajastaa WooCommerce verkkokaupan toiminta siten, että käyttäjät voivat tilata tuotteita vain tiettyinä kellonaikoina ja päivinä.

Aukioloajat merkataan koodiin muodossa TUNNIT, MINUUTIT, SEKUNNIT. Jos kauppa on esimerkiksi auki klo 7 – 15 niin merkataan aukioloaikoihin vain 7 00 00 ja 15 00 00.

Ensimmäisessä $weekdays_open taulukossa asetetaan arkipäivien aukiolot. Jos haluat esimerkiksi, että kauppa on suljettuna keskiviikkoisin, yksinkertaiseti poista ’Wed’ taulukosta.

Seuraavaksi $weekends_open taulukko määrittää viikonloppujen aukioloajat, eli jos haluat, että kauppa on auki lauantain lisäksi sunnuntaina tulee sinun lisätä koodissa ”, ’Sun’ ” sen sisälle, jolloin koko koodi on $weekends_open = array( ’Sat’ , ’Sun’ );

Tämän jälkeen yksinkertaisesti katsotaan onko kauppa auki vai ei ja palautetaan WooCommercelle muuttuja $purchasable, joka kertoo ovatko tuotteet ostettavissa vai eivät. Jos asiakkaalla on ostoskorissa tuotteita poistetaan myös ne ostoskorista kokonaan.

Jotta asiakkaat eivät täysin hämmentyisi, miksi eivät voi ostaa tuotteita annetaan heille virhe ilmoitus kaupan ollessa suljettuna ja kerrotaan, että he voivat tilata tuotteita tiettynä päivänä tiettyyn kellon aikaan.

Koodi valmiina käyttöönottoa varten

/*
*
* Kaupan aukioloajan hallinta
* v1.1
* Author: Mainostoimisto Aate
* Website: https://aate.fi
*
*/

// Funktio joka palauttaa true / false sen mukaan onko kauppa auki vai ei
function is_store_open() {
    // Set Your shop time zone (http://php.net/manual/en/timezones.php)
    date_default_timezone_set('Europe/Helsinki');
	

    // Alla kaupan aukioloajat
	$weekdays_open = array( 'Mon', 'Tue', 'Wed', 'Thu', 'Fri' ); // Arkipäivät jolloin auki
	$weekends_open = array('Sat'); // Viikonlopun päivät jolloin auki
	if ( in_array( date( 'D' ), $weekdays_open ) ) { 
		$start_time = mktime('09', '00', '00', date('m'), date('d'), date('Y')); // 09:00:00
		$end_time   = mktime('20', '00', '00', date('m'), date('d'), date('Y')); // 20:00:00
		$now        = time(); // Current timestamp in seconds
		
		return ( $now >= $start_time && $now <= $end_time ) ? true : false;
	}	
	elseif ( in_array(date('D'), $weekends_open ) ) { 
		$start_time = mktime('14', '00', '00', date('m'), date('d'), date('Y')); // 14:00:00
		$end_time   = mktime('20', '00', '00', date('m'), date('d'), date('Y')); // 20:00:00
		$now        = time(); // Current timestamp in seconds
		
		return ( $now >= $start_time && $now <= $end_time ) ? true : false;
	}
	else {
		return false;
	}
}

// Estä ostaminen kun kauppa on suljettu
add_filter( 'woocommerce_variation_is_purchasable', 'disable_purchases_on_shop', 10, 2 );
add_filter( 'woocommerce_is_purchasable', 'disable_purchases_on_shop', 10, 2 );
function disable_purchases_on_shop( $purchasable, $product ) {
    // Estetään ostot kun kauppa on kiinni.
    if( ! is_store_open() )
        $purchasable = false;

    return $purchasable;
}


add_action( 'template_redirect', 'closing_shop_notice' );
function closing_shop_notice(){
    if ( ! ( is_cart() || is_checkout() ) && ! is_store_open() ) {
        // Store closed notice
		$weekdays_open = array( 'Mon', 'Tue', 'Wed', 'Thu', 'Fri' ); // Arkipäivät jolloin auki
		$weekends_open = array('Sat'); // Viikonlopun päivät jolloin auki
		if (in_array(date('D'), $weekdays_open)) {
			$time = "09:00";
			wc_add_notice( __("Verkkokauppamme aukeaa kello " . $time . " - Voit tilata tuotteita verkkokaupastamme klo 9 - 20."), 'error' );
		}
		elseif (in_array( date('D'), $weekends_open)) {
			$time = '14:00';
			wc_add_notice( __("Verkkokauppamme aukeaa kello " . $time . " - Voit tilata tuotteita verkkokaupastamme klo 14 - 20."), 'error' );
		}
		else {
			wc_add_notice( __("Verkkokauppamme aukeaa maanantaina klo 09:00."), 'error' );
		}
    }
}

Koodin ja sen selitteen tekijä on Toni Manninen Mainostoimisto Aatteelta.

Kun kaipaat verkkosivuston tai verkkokaupan toteuttajaa? Ota yhteyttä https://aate.fi/verkkosivut ja kysy lisää!

Kaksivaiheinen tunnistus – WordPress ja WooCommerce sivustolle

Kaksivaiheinen tunnistus – tunnetusti parantaa sivuston ja verkkokaupan tietoturvaa älyttömästi. Tämä on erityisesti hyödyllinen mm. WordPress admineille ja kauppiaille, jotka pääsevät hallitsemaan tärkeitä kotisivun / verkkokaupan asetuksia.

Haluaisitko ottaa sellaisen käyttöön myös omassa kotisivussa tai verkkokaupassa? Jos näin on! Niin tästä löydät älyttömän helpot ohjeet kaksivaiheisen tunnistuksen käyttöönottoon.

Lataa ensimmäisenä Two-Factor lisäosa – WordPress lisäsosista

Lataamisen ja lisäosan aktivoinnin jälkeen navigoi omaan profiilisi: Käyttäjät > Profiili. Omasta profiilistasi voit valita minkä tunnistautumistavan haluat ottaa käyttöön.

Oma suositukseni on joko sähköpostitse lähetettävä koodi tai mobiililla ja tabletilla mainiosti toimiva ”Aikaperusteinen kertakäyttöinen salasana (TOTP)”.

Sähköpostitse lähetettävä koodi toimii seuraavasti

Kun alat kirjautumaan kotisivuillesi ja syötät oikean käyttäjätunnuksen ja salasanan. Lähtee kyseisen käyttäjätunnuksen sähköpostiin varmistuskoodi, jonka avulla pääset kirjautumaan sisälle.

Aikaperusteinen kertakäyttöinen salasana (TOTP) toimii seuraavasti

Tämän käyttöön tarvitset autentikaattorin. Yleisimmät käytössä olevat sovellukseet ovat Google Authenticator (Android versio, IOS versio) ja Twilio Authy (Android versio, IOS versio) joka asennetaan puhelimeen tai vaikkapa tablettiin.

Kun olet asentanut kyseisen sovelluksen skannaa ”Aikaperusteinen kertakäyttöinen salasana (TOTP)” alapuolella oleva QR koodi puhelimella tai tabletilla.

Tästä saat koodin mikä sinun tulee vielä syöttää QR koodin alapuolella olevaan kenttään. Tämän jälkeen pääset aina tarkistamaan sisäänkirjautumisessa vaadittavan koodin juuri kyseisestä puhelimesta tai tabletista.

Näin pakotat kaksivaiheisen tunnistuksen kaikille käyttäjille

add_filter(
    'two_factor_enabled_providers_for_user',
    function( $providers ) {
        if ( empty( $providers ) && class_exists( 'Two_Factor_Email' ) ) {
            $providers[] = 'Two_Factor_Email';
        }

        return $providers;
    }
);

Koodin lähde: https://wordpress.org/support/topic/can-i-by-default-turn-on-this-feature-for-all-my-existing-and-for-new-user/

Mitä tapahtuu, kun aktivoit pakollisen tunnistautumisen?

Kun pakotat kaksivaiheisen tunnistuksen kaikille käyttäjille. Kirjautuessa sisään, lähtee sähköpostiin varmistusviesti, joka sisältää koodin, jolla pääsee kirjautumaan sivustolle.

Lisävinkki:
Jos oikeasti haluat turvalliset ja uniikit salasanat jokaiseen paikkaan mihin ikinä kirjaudutkaan. Suuri suositus Lastpass tai 1Password palveluille. Näiden avulla voit pitää salasanat ja tunnukset turvassa todella tehokkaasti.