{"id":12481,"date":"2026-04-13T17:41:55","date_gmt":"2026-04-13T14:41:55","guid":{"rendered":"https:\/\/riin.eu\/miksi-wordpress-sivusto-tarvitsee-yllapitoa\/"},"modified":"2026-04-13T17:54:11","modified_gmt":"2026-04-13T14:54:11","slug":"miksi-wordpress-sivusto-tarvitsee-yllapitoa","status":"publish","type":"post","link":"https:\/\/riin.eu\/fi\/miksi-wordpress-sivusto-tarvitsee-yllapitoa\/","title":{"rendered":"Miksi WordPress-sivusto tarvitsee yll\u00e4pitoa?"},"content":{"rendered":"\n<p>WordPress-sivustosi on kuin auto \u2014 se tarvitsee s\u00e4\u00e4nn\u00f6llist\u00e4 huoltoa toimiakseen hyvin. Ilman yll\u00e4pitoa sivusto hidastuu, altistuu haavoittuvuuksille ja lakkaa lopulta toimimasta kunnolla. <\/p>\n\n<p>Monet pienyritt\u00e4j\u00e4t ajattelevat, ett\u00e4 kun verkkosivusto on kerran valmis, se on siin\u00e4. Todellisuudessa WordPress vaatii jatkuvaa huomiota \u2014 ja t\u00e4ss\u00e4 selit\u00e4mme miksi. <\/p>\n\n<h2 class=\"wp-block-heading\" id=\"mis-juhtub-kui-kodulehte-ei-hoolda-\">Mit\u00e4 tapahtuu, jos verkkosivustoa ei yll\u00e4pidet\u00e4?<\/h2>\n\n<p>Kuvittele: avaat er\u00e4\u00e4n\u00e4 aamuna kotisivusi ja n\u00e4et vain valkoisen n\u00e4yt\u00f6n. Tai viel\u00e4 pahempaa \u2014 Google on poistanut sivusi hakutuloksista, koska sivu on hidas ja turvaton. <\/p>\n\n<p>T\u00e4m\u00e4 ei ole hypoteettinen skenaario. <strong>43 % kaikista verkkohy\u00f6kk\u00e4yksist\u00e4 kohdistuu pienyrityksiin<\/strong>, ja WordPress on maailman suosituin sis\u00e4ll\u00f6nhallintaj\u00e4rjestelm\u00e4, mik\u00e4 tekee siit\u00e4 hakkereiden suosikkikohteen.<\/p>\n\n<p>Yll\u00e4pit\u00e4m\u00e4t\u00f6n verkkosivusto tarkoittaa:<\/p>\n\n<ul class=\"wp-block-list\">\n<li><strong>Tietoturvariskej\u00e4<\/strong> \u2014 vanhat lis\u00e4osat ja teemat sis\u00e4lt\u00e4v\u00e4t tunnettuja tietoturva-aukkoja<\/li>\n\n\n\n<li><strong>Hidastumista<\/strong> \u2014 tietokanta paisuu, kuvat ovat optimoimattomia, v\u00e4limuisti on tyhj\u00e4<\/li>\n\n\n\n<li><strong>Rikkoutuneita toimintoja<\/strong> \u2014 p\u00e4ivitt\u00e4m\u00e4tt\u00f6m\u00e4t lis\u00e4osat lakkaavat jossain vaiheessa toimimasta<\/li>\n\n\n\n<li><strong>SEO-sijoituksen laskua<\/strong> \u2014 Google suosii nopeita ja turvallisia sivuja<\/li>\n<\/ul>\n\n<h2 class=\"wp-block-heading\" id=\"5-peamist-ohtu-kui-hooldust-ei-tee\">5 suurinta vaaraa, jos yll\u00e4pitoa ei tehd\u00e4<\/h2>\n\n<h3 class=\"wp-block-heading\" id=\"1-turvaaugud-ja-h-kkimine\">1. Tietoturva-aukot ja hakkerointi<\/h3>\n\n<p>WordPress julkaisee s\u00e4\u00e4nn\u00f6llisesti tietoturvap\u00e4ivityksi\u00e4. Jokainen p\u00e4ivitys korjaa tunnettuja haavoittuvuuksia. Jos et asenna niit\u00e4, j\u00e4t\u00e4t oven auki hakkereille.  <\/p>\n\n<p>Yleisimm\u00e4t seuraukset:<\/p>\n\n<ul class=\"wp-block-list\">\n<li>Haittaohjelmien sy\u00f6tt\u00e4minen sivustolle<\/li>\n\n\n\n<li>Asiakastietojen vuotaminen<\/li>\n\n\n\n<li>Sivuston k\u00e4ytt\u00f6 roskapostin l\u00e4hett\u00e4miseen<\/li>\n<\/ul>\n\n<h3 class=\"wp-block-heading\" id=\"2-aeglane-laadimiskiirus\">2. Hidas latausnopeus<\/h3>\n\n<p>Jokainen sekunti merkitsee. <strong>53 % mobiilik\u00e4ytt\u00e4jist\u00e4 poistuu sivulta, jos se ei lataudu 3 sekunnissa.<\/strong>  Huoltamaton sivu hidastuu ajan my\u00f6t\u00e4 entisest\u00e4\u00e4n:<\/p>\n\n<ul class=\"wp-block-list\">\n<li>Tietokanta t\u00e4yttyy tarpeettomalla tiedolla<\/li>\n\n\n\n<li>Kuvat j\u00e4\u00e4v\u00e4t optimoimatta<\/li>\n\n\n\n<li>V\u00e4limuisti ei toimi oikein<\/li>\n<\/ul>\n\n<h3 class=\"wp-block-heading\" id=\"3-pluginate-ja-teemade-hilduvusprobleemid\">3. Lis\u00e4osien ja teemojen yhteensopivuusongelmat<\/h3>\n\n<p>WordPress, lis\u00e4osat ja teemat p\u00e4ivittyv\u00e4t eri aikoina. Jos yksi komponentti p\u00e4ivittyy mutta muut eiv\u00e4t, syntyy ristiriitoja. Tuloksena voi olla:  <\/p>\n\n<ul class=\"wp-block-list\">\n<li>Valkoinen n\u00e4ytt\u00f6 (White Screen of Death)<\/li>\n\n\n\n<li>Rikkoutuneet yhteydenottolomakkeet<\/li>\n\n\n\n<li>H\u00e4iri\u00f6t maksuratkaisuissa<\/li>\n<\/ul>\n\n<h3 class=\"wp-block-heading\" id=\"4-seo-positsioonide-langus\">4. SEO-sijoitusten lasku<\/h3>\n\n<p>Google arvioi verkkosivuston teknist\u00e4 kuntoa. Yll\u00e4pit\u00e4m\u00e4t\u00f6n sivu menett\u00e4\u00e4 sijoituksiaan, koska: <\/p>\n\n<ul class=\"wp-block-list\">\n<li>Hidas sivu saa heikomman arvion<\/li>\n\n\n\n<li>Tietoturvaongelmat aiheuttavat varoituksen hakutuloksissa<\/li>\n\n\n\n<li>Rikkoutuneet linkit ja 404-virheet vahingoittavat k\u00e4ytt\u00e4j\u00e4kokemusta<\/li>\n<\/ul>\n\n<h3 class=\"wp-block-heading\" id=\"5-varunduse-puudumine\">5. Varmuuskopioiden puuttuminen<\/h3>\n\n<p>Ilman s\u00e4\u00e4nn\u00f6llist\u00e4 varmuuskopiointia riskin\u00e4 on kaiken menett\u00e4minen. Palvelinvika, hakkerointi tai oma virhe \u2014 ilman varmuuskopiota joudut aloittamaan nollasta. <\/p>\n\n<h2 class=\"wp-block-heading\" id=\"mida-wordpress-kodulehe-hooldus-sisaldab-\">Mit\u00e4 WordPress-sivuston yll\u00e4pito sis\u00e4lt\u00e4\u00e4?<\/h2>\n\n<p>Ammattimainen yll\u00e4pito ei ole vain \u201cp\u00e4ivit\u00e4 kaikki\u201d -painikkeen painamista. Se on j\u00e4rjestelm\u00e4llinen prosessi: <\/p>\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Toimenpide<\/th><th>Tiheys<\/th><th>Miksi t\u00e4rke\u00e4\u00e4<\/th><\/tr><\/thead><tbody><tr><td>WordPress-ytimen p\u00e4ivitt\u00e4minen<\/td><td>Heti julkaisun j\u00e4lkeen<\/td><td>Tietoturvapaikkaukset ja uudet toiminnot<\/td><\/tr><tr><td>Lis\u00e4osien p\u00e4ivitt\u00e4minen<\/td><td>Viikoittain<\/td><td>Yhteensopivuus ja tietoturva<\/td><\/tr><tr><td>Teeman p\u00e4ivitt\u00e4minen<\/td><td>Viikoittain<\/td><td>Ulkoasun vakaus<\/td><\/tr><tr><td>Varmuuskopiointi<\/td><td>P\u00e4ivitt\u00e4in<\/td><td>Tietojen suojaaminen<\/td><\/tr><tr><td>Tietoturvavalvonta<\/td><td>Jatkuva<\/td><td>Hy\u00f6kk\u00e4ysten ennaltaehk\u00e4isy<\/td><\/tr><tr><td>Nopeuden optimointi<\/td><td>Kuukausittain<\/td><td>K\u00e4ytt\u00e4j\u00e4kokemus ja SEO<\/td><\/tr><tr><td>Tietokannan puhdistaminen<\/td><td>Kuukausittain<\/td><td>Sivun nopeus<\/td><\/tr><\/tbody><\/table><\/figure>\n\n<h2 class=\"wp-block-heading\" id=\"kas-ma-saan-ise-hooldust-teha-\">Voinko tehd\u00e4 yll\u00e4pidon itse?<\/h2>\n\n<p>Kyll\u00e4, voit tehd\u00e4 perusasiat itse \u2014 asentaa p\u00e4ivityksi\u00e4 ja luoda varmuuskopioita. Mutta siihen liittyy riskej\u00e4: <\/p>\n\n<ul class=\"wp-block-list\">\n<li><strong>V\u00e4\u00e4r\u00e4 p\u00e4ivitysj\u00e4rjestys<\/strong> voi kaataa sivuston<\/li>\n\n\n\n<li><strong>Yhteensopivuusongelmia<\/strong> on vaikea ennakoida<\/li>\n\n\n\n<li><strong>Tietoturvavalvonnan<\/strong> m\u00e4\u00e4ritt\u00e4minen itse on monimutkaista<\/li>\n\n\n\n<li><strong>Aika<\/strong>, jonka k\u00e4yt\u00e4t huoltoon, on pois ydintoiminnastasi<\/li>\n<\/ul>\n\n<p>Ammattimainen yll\u00e4pito antaa sinulle mielenrauhan ja vapaa-aikaa keskitty\u00e4 siihen, mit\u00e4 osaat parhaiten \u2014 yrityksesi johtamiseen.<\/p>\n\n<h2 class=\"wp-block-heading\" id=\"kokkuv-te\">Yhteenveto<\/h2>\n\n<p>WordPress-sivuston yll\u00e4pito ei ole luksusta, vaan v\u00e4ltt\u00e4m\u00e4tt\u00f6myys. S\u00e4\u00e4nn\u00f6llinen yll\u00e4pito: <\/p>\n\n<ul class=\"wp-block-list\">\n<li><strong>Suojaa<\/strong> sivustoasi hakkereilta<\/li>\n\n\n\n<li><strong>Pit\u00e4\u00e4<\/strong> sivun nopeana ja toimivana<\/li>\n\n\n\n<li><strong>Varmistaa<\/strong> hyv\u00e4n sijoituksen Google-haussa<\/li>\n\n\n\n<li><strong>S\u00e4\u00e4st\u00e4\u00e4<\/strong> sinut kalliilta palautusty\u00f6lt\u00e4<\/li>\n<\/ul>\n\n<p><\/p>\n\t\t<div class=\"rhc-wrapper\">\n\n\t\t\t<!-- BASE PACKAGE -->\n\t\t\t<div class=\"rhc-base-package\">\n\t\t\t\t<div class=\"rhc-base-header\">\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<div class=\"rhc-base-label\">Perusyll\u00e4pito \u2014 aina mukana<\/div>\n\t\t\t\t\t\t<div class=\"rhc-base-name\">Mielenrauha verkkosivustollesi<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t<div class=\"rhc-base-price\">\n\t\t\t\t\t\t<div class=\"rhc-base-price-amount\">35\u20ac<\/div>\n\t\t\t\t\t\t<div class=\"rhc-base-price-period\">\/kk + alv<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<ul class=\"rhc-base-features\">\n\t\t\t\t\t\t\t\t\t\t\t<li><span class=\"rhc-check\">\u2713<\/span> WP:n, lis\u00e4osien ja teemojen p\u00e4ivitykset 1x viikossa<\/li>\n\t\t\t\t\t\t\t\t\t\t\t<li><span class=\"rhc-check\">\u2713<\/span> PHP-versiohallinta<\/li>\n\t\t\t\t\t\t\t\t\t\t\t<li><span class=\"rhc-check\">\u2713<\/span> Ulkoasupohjien p\u00e4ivitys<\/li>\n\t\t\t\t\t\t\t\t\t\t\t<li><span class=\"rhc-check\">\u2713<\/span> Varmuuskopio 1x kuukaudessa (s\u00e4ilytet\u00e4\u00e4n 90 p\u00e4iv\u00e4\u00e4)<\/li>\n\t\t\t\t\t\t\t\t\t\t\t<li><span class=\"rhc-check\">\u2713<\/span> Patchstack-turvaseuranta 24\/7<\/li>\n\t\t\t\t\t\t\t\t\t\t\t<li><span class=\"rhc-check\">\u2713<\/span> Hakkerointitakuu \u2014 ilmainen puhdistus<\/li>\n\t\t\t\t\t\t\t\t\t\t\t<li><span class=\"rhc-check\">\u2713<\/span> Elementor PRO -lisenssi sis\u00e4ltyy<\/li>\n\t\t\t\t\t\t\t\t\t\t\t<li><span class=\"rhc-check\">\u2713<\/span> Kuukausittainen yll\u00e4pitoraportti<\/li>\n\t\t\t\t\t\t\t\t\t<\/ul>\n\t\t\t\t<div class=\"rhc-base-badge\">\ud83d\udee1\ufe0f Turvasuojaus ja hakkerointitakuu sis\u00e4ltyy jokaiselle asiakkaalle<\/div>\n\t\t\t<\/div>\n\n\t\t\t<!-- ADDONS -->\n\t\t\t<div class=\"rhc-addons-container\">\n\t\t\t\t<div class=\"rhc-addons-title\">Lis\u00e4\u00e4 tarvitsemasi<\/div>\n\t\t\t\t<div class=\"rhc-addons-subtitle\">Kytke p\u00e4\u00e4lle ja pois \u2014 hintasi muuttuu heti alla<\/div>\n\n\t\t\t\t\t\t\t\t\t<div class=\"rhc-addon-item\" data-id=\"daily_backup\" data-price=\"10\" data-index=\"0\">\n\t\t\t\t\t\t<div class=\"rhc-addon-left\">\n\t\t\t\t\t\t\t<div class=\"rhc-addon-toggle\"><\/div>\n\t\t\t\t\t\t\t<div class=\"rhc-addon-info\">\n\t\t\t\t\t\t\t\t<h4>P\u00e4ivitt\u00e4inen varmuuskopio<\/h4>\n\t\t\t\t\t\t\t\t<p>Varmuuskopio joka p\u00e4iv\u00e4 ulkoiselle palvelimelle. Eilinen versio palautetaan, jos jotain menee pieleen. <\/p>\n\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<div class=\"rhc-addon-price\">+10\u20ac<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t<div class=\"rhc-addon-item\" data-id=\"uptime_monitor\" data-price=\"10\" data-index=\"1\">\n\t\t\t\t\t\t<div class=\"rhc-addon-left\">\n\t\t\t\t\t\t\t<div class=\"rhc-addon-toggle\"><\/div>\n\t\t\t\t\t\t\t<div class=\"rhc-addon-info\">\n\t\t\t\t\t\t\t\t<h4>Uptime-seuranta<\/h4>\n\t\t\t\t\t\t\t\t<p>Verkkosivuston saavutettavuutta seurataan ymp\u00e4ri vuorokauden. Jos sivu kaatuu, siit\u00e4 ilmoitetaan heti. <\/p>\n\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<div class=\"rhc-addon-price\">+10\u20ac<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t<div class=\"rhc-addon-item\" data-id=\"content_mini\" data-price=\"15\" data-index=\"2\">\n\t\t\t\t\t\t<div class=\"rhc-addon-left\">\n\t\t\t\t\t\t\t<div class=\"rhc-addon-toggle\"><\/div>\n\t\t\t\t\t\t\t<div class=\"rhc-addon-info\">\n\t\t\t\t\t\t\t\t<h4>Sis\u00e4ll\u00f6nhallinta Mini<\/h4>\n\t\t\t\t\t\t\t\t<p>Enint\u00e4\u00e4n 1 tunti nelj\u00e4nnesvuodessa \u2014 tekstien ja kuvien p\u00e4ivitys, tietojen lis\u00e4\u00e4minen. L\u00e4het\u00e4 muutokset s\u00e4hk\u00f6postilla ja verkkosivusto on aina ajan tasalla. <\/p>\n\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<div class=\"rhc-addon-price\">+15\u20ac<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t<div class=\"rhc-addon-item\" data-id=\"content_standard\" data-price=\"35\" data-index=\"3\">\n\t\t\t\t\t\t<div class=\"rhc-addon-left\">\n\t\t\t\t\t\t\t<div class=\"rhc-addon-toggle\"><\/div>\n\t\t\t\t\t\t\t<div class=\"rhc-addon-info\">\n\t\t\t\t\t\t\t\t<h4>Sis\u00e4ll\u00f6nhallinta Standard<\/h4>\n\t\t\t\t\t\t\t\t<p>Enint\u00e4\u00e4n 1 tunti kuukaudessa \u2014 sis\u00e4ll\u00f6n p\u00e4ivitys, kuvien vaihto, pienemm\u00e4t muutokset. K\u00e4ytt\u00e4jien hallinta sis\u00e4ltyy. <\/p>\n\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<div class=\"rhc-addon-price\">+35\u20ac<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t<div class=\"rhc-addon-item\" data-id=\"seo_tracking\" data-price=\"10\" data-index=\"4\">\n\t\t\t\t\t\t<div class=\"rhc-addon-left\">\n\t\t\t\t\t\t\t<div class=\"rhc-addon-toggle\"><\/div>\n\t\t\t\t\t\t\t<div class=\"rhc-addon-info\">\n\t\t\t\t\t\t\t\t<h4>SEO-avainsanojen seuranta<\/h4>\n\t\t\t\t\t\t\t\t<p>Enint\u00e4\u00e4n 100 avainsanan sijoitusten seuranta. Kuukausiraportissa n\u00e4ytet\u00e4\u00e4n muutokset. <\/p>\n\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<div class=\"rhc-addon-price\">+10\u20ac<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t<div class=\"rhc-addon-item\" data-id=\"performance\" data-price=\"10\" data-index=\"5\">\n\t\t\t\t\t\t<div class=\"rhc-addon-left\">\n\t\t\t\t\t\t\t<div class=\"rhc-addon-toggle\"><\/div>\n\t\t\t\t\t\t\t<div class=\"rhc-addon-info\">\n\t\t\t\t\t\t\t\t<h4>Suorituskyvyn seuranta<\/h4>\n\t\t\t\t\t\t\t\t<p>Verkkosivuston nopeuden s\u00e4\u00e4nn\u00f6llinen seuranta ja suositukset. Hidas sivu menett\u00e4\u00e4 k\u00e4vij\u00f6it\u00e4 ja Google-sijoitusta. <\/p>\n\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<div class=\"rhc-addon-price\">+10\u20ac<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t<div class=\"rhc-addon-item\" data-id=\"broken_links\" data-price=\"5\" data-index=\"6\">\n\t\t\t\t\t\t<div class=\"rhc-addon-left\">\n\t\t\t\t\t\t\t<div class=\"rhc-addon-toggle\"><\/div>\n\t\t\t\t\t\t\t<div class=\"rhc-addon-info\">\n\t\t\t\t\t\t\t\t<h4>Rikkin\u00e4isten linkkien seuranta<\/h4>\n\t\t\t\t\t\t\t\t<p>P\u00e4ivitt\u00e4inen skannaus, joka havaitsee rikkin\u00e4iset linkit ennen kuin Google ne huomaa.<\/p>\n\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<div class=\"rhc-addon-price\">+5\u20ac<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t<div class=\"rhc-addon-item\" data-id=\"pro_report\" data-price=\"5\" data-index=\"7\">\n\t\t\t\t\t\t<div class=\"rhc-addon-left\">\n\t\t\t\t\t\t\t<div class=\"rhc-addon-toggle\"><\/div>\n\t\t\t\t\t\t\t<div class=\"rhc-addon-info\">\n\t\t\t\t\t\t\t\t<h4>Ammattimainen PDF-raportti<\/h4>\n\t\t\t\t\t\t\t\t<p>Yksityiskohtainen br\u00e4nd\u00e4tty raportti turvallisuus- ja suorituskykytiedoilla. Sopii my\u00f6s johdolle esitett\u00e4v\u00e4ksi. <\/p>\n\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<div class=\"rhc-addon-price\">+5\u20ac<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\n\t\t\t<!-- TOTAL BAR -->\n\t\t\t<div class=\"rhc-total-bar\">\n\t\t\t\t<div class=\"rhc-total-left\">\n\t\t\t\t\t<div class=\"rhc-total-label\">Kuukausihintasi<\/div>\n\t\t\t\t\t<div class=\"rhc-total-amount\" id=\"rhc-total-price\">35\u20ac <span>\/kk + alv<\/span><\/div>\n\t\t\t\t\t<div class=\"rhc-total-detail\" id=\"rhc-total-detail\">Perusyll\u00e4pito<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<button type=\"button\" class=\"rhc-total-btn\" id=\"rhc-open-form\">Telli hooldus \u2192<\/button>\n\t\t\t<\/div>\n\n\t\t\t<!-- FORM MODAL -->\n\t\t\t<div class=\"rhc-modal\" id=\"rhc-modal\" style=\"display:none;\">\n\t\t\t\t<div class=\"rhc-modal-overlay\"><\/div>\n\t\t\t\t<div class=\"rhc-modal-box\">\n\t\t\t\t\t<button type=\"button\" class=\"rhc-modal-close\" id=\"rhc-modal-close\">\u00d7<\/button>\n\t\t\t\t\t<h3>Tilaa yll\u00e4pitopaketti<\/h3>\n\t\t\t\t\t<p class=\"rhc-modal-summary\" id=\"rhc-modal-summary\"><\/p>\n\t\t\t\t\t<form id=\"rhc-form\">\n\t\t\t\t\t\t<input type=\"text\" name=\"name\" placeholder=\"Nimesi *\" required>\n\t\t\t\t\t\t<input type=\"email\" name=\"email\" placeholder=\"S\u00e4hk\u00f6postisi *\" required>\n\t\t\t\t\t\t<input type=\"text\" name=\"website\" placeholder=\"Verkkosivuston osoite (esim. riin.eu)\">\n\t\t\t\t\t\t<textarea name=\"message\" placeholder=\"Lisainfo (valikuline)\" rows=\"3\"><\/textarea>\n\t\t\t\t\t\t<!-- HONEYPOT \u2014 peidetud botide jaoks, kasutaja ei n\u00e4e -->\n\t\t\t\t\t\t<div class=\"rhc-hp\" aria-hidden=\"true\">\n\t\t\t\t\t\t\t<label for=\"rhc-website-url\">Website URL (leave empty)<\/label>\n\t\t\t\t\t\t\t<input type=\"text\" name=\"website_url\" id=\"rhc-website-url\" tabindex=\"-1\" autocomplete=\"off\" value=\"\">\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<input type=\"hidden\" name=\"form_opened\" id=\"rhc-form-opened\" value=\"0\">\n\t\t\t\t\t\t<button type=\"submit\" class=\"rhc-form-submit\">L\u00e4het\u00e4 kysely<\/button>\n\t\t\t\t\t\t<div class=\"rhc-form-msg\" id=\"rhc-form-msg\"><\/div>\n\t\t\t\t\t<\/form>\n\t\t\t\t<\/div>\n\t\t\t<\/div>\n\n\t\t<\/div>\n\n\t\t<style>\n\t\t\/* Scoped CSS \u2014 all rules under .rhc-wrapper to avoid conflicts *\/\n\t\t\/* AGGRESSIVE RESET \u2014 override theme defaults for ALL children *\/\n\t\t.rhc-wrapper { font-family: 'Inter', -apple-system, sans-serif; max-width: 900px; margin: 0 auto; color: #333; }\n\t\t.rhc-wrapper, .rhc-wrapper * { box-sizing: border-box; }\n\t\t.rhc-wrapper h1, .rhc-wrapper h2, .rhc-wrapper h3, .rhc-wrapper h4, .rhc-wrapper h5, .rhc-wrapper p, .rhc-wrapper ul, .rhc-wrapper li { margin: 0; padding: 0; line-height: 1.5; }\n\t\t.rhc-wrapper ul { list-style: none; }\n\n\t\t\/* BASE PACKAGE *\/\n\t\t.rhc-base-package { background: #1B4F72; color: #fff; border-radius: 16px; padding: 40px; margin-bottom: 32px; }\n\t\t.rhc-base-header { display: flex; justify-content: space-between; align-items: flex-start; margin-bottom: 24px; }\n\t\t.rhc-base-label { font-size: 13px; text-transform: uppercase; letter-spacing: 1px; opacity: 0.7; margin-bottom: 4px; }\n\t\t.rhc-base-name { font-family: 'Poppins', sans-serif; font-size: 28px; font-weight: 600; }\n\t\t.rhc-base-price { text-align: right; }\n\t\t.rhc-base-price-amount { font-family: 'Poppins', sans-serif; font-size: 48px; font-weight: 600; }\n\t\t.rhc-base-price-period { font-size: 14px; opacity: 0.7; }\n\t\t.rhc-base-features { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; list-style: none; padding: 0; margin: 0; }\n\t\t.rhc-base-features li { font-size: 14px; opacity: 0.95; display: flex; align-items: flex-start; gap: 8px; }\n\t\t.rhc-base-features .rhc-check { color: #7dcea0; font-weight: 700; flex-shrink: 0; }\n\t\t.rhc-base-badge { display: inline-block; background: rgba(255,255,255,0.15); padding: 6px 14px; border-radius: 20px; font-size: 12px; margin-top: 20px; }\n\n\t\t\/* ADDONS *\/\n\t\t.rhc-addons-container { background: #fff; border: 2px solid #e8e8e8; border-radius: 16px; padding: 32px; margin-bottom: 24px; }\n\t\t.rhc-addons-title { font-family: 'Poppins', sans-serif; font-size: 22px !important; color: #1a1a1a !important; margin: 0 0 8px 0 !important; line-height: 1.3 !important; }\n\t\t.rhc-addons-subtitle { font-size: 14px !important; color: #888 !important; margin: 0 0 24px 0 !important; line-height: 1.5 !important; }\n\t\t.rhc-addon-item { display: flex !important; align-items: center; justify-content: space-between; padding: 16px; border: 2px solid #f0f0f0; border-radius: 12px; margin-bottom: 10px !important; cursor: pointer; transition: all 0.2s; min-height: auto; }\n\t\t.rhc-addon-item:hover { border-color: #1B4F72; background: #f8fbfe; }\n\t\t.rhc-addon-item.active { border-color: #1B4F72; background: #EBF5FB; }\n\t\t.rhc-addon-left { display: flex !important; align-items: center; gap: 14px; flex: 1; min-width: 0; }\n\t\t.rhc-addon-toggle { width: 44px !important; height: 24px !important; border-radius: 12px; background: #ddd; position: relative; transition: background 0.2s; flex-shrink: 0; }\n\t\t.rhc-addon-item.active .rhc-addon-toggle { background: #1B4F72; }\n\t\t.rhc-addon-toggle::after { content: ''; position: absolute; top: 3px; left: 3px; width: 18px; height: 18px; border-radius: 50%; background: #fff; transition: transform 0.2s; box-shadow: 0 1px 3px rgba(0,0,0,0.2); }\n\t\t.rhc-addon-item.active .rhc-addon-toggle::after { transform: translateX(20px); }\n\t\t.rhc-addon-info { flex: 1; min-width: 0; }\n\t\t.rhc-addon-info h4 { font-size: 15px !important; font-weight: 600 !important; color: #1a1a1a !important; margin: 0 0 4px 0 !important; line-height: 1.3 !important; }\n\t\t.rhc-addon-info p { font-size: 13px !important; color: #888 !important; margin: 0 !important; line-height: 1.5 !important; }\n\t\t.rhc-addon-price { font-family: 'Poppins', sans-serif; font-size: 20px; font-weight: 600; color: #1B4F72; white-space: nowrap; margin-left: 14px; }\n\n\t\t\/* TOTAL BAR *\/\n\t\t.rhc-total-bar { background: #1a1a1a; border-radius: 16px; padding: 28px 36px; color: #fff; display: flex; align-items: center; justify-content: space-between; gap: 24px; }\n\t\t.rhc-total-label { font-size: 13px; opacity: 0.6; margin-bottom: 2px; }\n\t\t.rhc-total-amount { font-family: 'Poppins', sans-serif; font-size: 48px; font-weight: 600; line-height: 1; }\n\t\t.rhc-total-amount span { font-size: 16px; font-weight: 400; opacity: 0.6; font-family: 'Inter', sans-serif; }\n\t\t.rhc-total-detail { font-size: 13px; opacity: 0.5; margin-top: 4px; }\n\t\t.rhc-total-btn { background: #fff; color: #1a1a1a; padding: 16px 36px; border-radius: 10px; font-size: 16px; font-weight: 700; border: none; cursor: pointer; transition: transform 0.2s; }\n\t\t.rhc-total-btn:hover { transform: scale(1.03); }\n\n\t\t\/* MODAL *\/\n\t\t.rhc-modal { position: fixed; inset: 0; z-index: 99999; display: flex; align-items: center; justify-content: center; }\n\t\t.rhc-modal-overlay { position: absolute; inset: 0; background: rgba(0,0,0,0.6); }\n\t\t.rhc-modal-box { position: relative; background: #fff; border-radius: 16px; padding: 40px; max-width: 480px; width: 90%; max-height: 90vh; overflow-y: auto; box-shadow: 0 20px 60px rgba(0,0,0,0.3); }\n\t\t.rhc-modal-close { position: absolute; top: 12px; right: 16px; background: none; border: none; font-size: 32px; cursor: pointer; color: #999; line-height: 1; padding: 0; }\n\t\t.rhc-modal-close:hover { color: #1a1a1a; }\n\t\t.rhc-modal-box h3 { font-family: 'Poppins', sans-serif; font-size: 24px; color: #1a1a1a; margin: 0 0 8px 0; }\n\t\t.rhc-modal-summary { font-size: 14px; color: #1B4F72; font-weight: 600; margin: 0 0 24px 0; padding: 12px 16px; background: #EBF5FB; border-radius: 8px; }\n\t\t#rhc-form { display: flex; flex-direction: column; gap: 12px; }\n\t\t#rhc-form input, #rhc-form textarea { padding: 12px 16px; border: 1px solid #ddd; border-radius: 8px; font-size: 14px; font-family: inherit; }\n\t\t#rhc-form input:focus, #rhc-form textarea:focus { outline: none; border-color: #1B4F72; }\n\t\t.rhc-form-submit { background: #1B4F72; color: #fff; padding: 14px 24px; border: none; border-radius: 8px; font-size: 15px; font-weight: 700; cursor: pointer; transition: background 0.2s; }\n\t\t.rhc-form-submit:hover { background: #133A55; }\n\t\t.rhc-form-submit:disabled { opacity: 0.6; cursor: not-allowed; }\n\t\t.rhc-form-msg { font-size: 14px; padding: 12px; border-radius: 8px; display: none; }\n\t\t.rhc-form-msg.success { display: block; background: #d4edda; color: #155724; }\n\t\t.rhc-form-msg.error { display: block; background: #f8d7da; color: #721c24; }\n\t\t\/* HONEYPOT \u2014 peidetud botide jaoks (mitmel tasemel kaitse, et CSS ei eemaldataks) *\/\n\t\t.rhc-hp { position: absolute !important; left: -9999px !important; top: -9999px !important; width: 1px !important; height: 1px !important; overflow: hidden !important; opacity: 0 !important; pointer-events: none !important; }\n\n\t\t\/* RESPONSIVE *\/\n\t\t@media (max-width: 768px) {\n\t\t\t.rhc-base-package { padding: 28px 20px; }\n\t\t\t.rhc-base-header { flex-direction: column; gap: 16px; }\n\t\t\t.rhc-base-price { text-align: left; }\n\t\t\t.rhc-base-features { grid-template-columns: 1fr; }\n\t\t\t.rhc-base-name { font-size: 22px; }\n\t\t\t.rhc-base-price-amount { font-size: 36px; }\n\t\t\t.rhc-addons-container { padding: 20px; }\n\t\t\t.rhc-addon-item { flex-direction: column; align-items: flex-start; gap: 12px; }\n\t\t\t.rhc-addon-price { margin-left: 0; }\n\t\t\t.rhc-total-bar { flex-direction: column; padding: 24px; text-align: center; }\n\t\t\t.rhc-total-amount { font-size: 36px; }\n\t\t\t.rhc-total-btn { width: 100%; }\n\t\t\t.rhc-modal-box { padding: 28px 20px; }\n\t\t}\n\t\t<\/style>\n\n\t\t<script>\n\t\t(function() {\n\t\t\tvar RHC = {\"base\":\"Perusyll\\u00e4pito\",\"addonOne\":\"Baashooldus + %d lisateenus\",\"addonMany\":\"Baashooldus + %d lisateenust\",\"period\":\"\\\/kk + alv\",\"submitSuccess\":\"Ait\\u00e4h! P\\u00e4ring on saadetud. Vastame esimesel v\\u00f5imalusel.\",\"submitError\":\"Tekkis viga. Palun proovi uuesti v\\u00f5i kirjuta otse aadressile riin@riin.eu.\",\"fillFields\":\"Palun t\\u00e4ida nimi ja kehtiv e-mail.\",\"sending\":\"Saadan...\",\"submitBtn\":\"L\\u00e4het\\u00e4 kysely\",\"ajaxUrl\":\"https:\\\/\\\/riin.eu\\\/wp-admin\\\/admin-ajax.php\",\"nonce\":\"6fd954767b\"};\n\t\t\tvar basePrice = 35;\n\t\t\tvar wrapper = document.currentScript.previousElementSibling;\n\t\t\twhile (wrapper && !wrapper.classList.contains('rhc-wrapper')) {\n\t\t\t\twrapper = wrapper.previousElementSibling;\n\t\t\t}\n\t\t\tif (!wrapper) return;\n\n\t\t\tvar addons = wrapper.querySelectorAll('.rhc-addon-item');\n\t\t\tvar totalPriceEl = wrapper.querySelector('#rhc-total-price');\n\t\t\tvar totalDetailEl = wrapper.querySelector('#rhc-total-detail');\n\t\t\tvar openBtn = wrapper.querySelector('#rhc-open-form');\n\t\t\tvar modal = wrapper.querySelector('#rhc-modal');\n\t\t\tvar modalClose = wrapper.querySelector('#rhc-modal-close');\n\t\t\tvar modalOverlay = wrapper.querySelector('.rhc-modal-overlay');\n\t\t\tvar modalSummary = wrapper.querySelector('#rhc-modal-summary');\n\t\t\tvar form = wrapper.querySelector('#rhc-form');\n\t\t\tvar formMsg = wrapper.querySelector('#rhc-form-msg');\n\n\t\t\tfunction getActiveAddons() {\n\t\t\t\tvar active = [];\n\t\t\t\taddons.forEach(function(item) {\n\t\t\t\t\tif (item.classList.contains('active')) {\n\t\t\t\t\t\tactive.push({\n\t\t\t\t\t\t\tid: item.getAttribute('data-id'),\n\t\t\t\t\t\t\tname: item.querySelector('.rhc-addon-info h4').textContent,\n\t\t\t\t\t\t\tprice: parseInt(item.getAttribute('data-price'), 10)\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\treturn active;\n\t\t\t}\n\n\t\t\tfunction updateTotal() {\n\t\t\t\tvar active = getActiveAddons();\n\t\t\t\tvar sum = active.reduce(function(s, a) { return s + a.price; }, 0);\n\t\t\t\tvar total = basePrice + sum;\n\t\t\t\ttotalPriceEl.innerHTML = total + '\u20ac <span>' + RHC.period + '<\/span>';\n\t\t\t\tif (active.length === 0) {\n\t\t\t\t\ttotalDetailEl.textContent = RHC.base;\n\t\t\t\t} else {\n\t\t\t\t\tvar template = active.length === 1 ? RHC.addonOne : RHC.addonMany;\n\t\t\t\t\ttotalDetailEl.textContent = template.replace('%d', active.length);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\taddons.forEach(function(item) {\n\t\t\t\titem.addEventListener('click', function() {\n\t\t\t\t\titem.classList.toggle('active');\n\t\t\t\t\tupdateTotal();\n\t\t\t\t});\n\t\t\t});\n\n\t\t\tfunction openModal() {\n\t\t\t\tvar active = getActiveAddons();\n\t\t\t\tvar sum = active.reduce(function(s, a) { return s + a.price; }, 0);\n\t\t\t\tvar total = basePrice + sum;\n\t\t\t\tvar summary = RHC.base + ' (' + basePrice + '\u20ac)';\n\t\t\t\tif (active.length > 0) {\n\t\t\t\t\tsummary += ' + ' + active.map(function(a) { return a.name + ' (+' + a.price + '\u20ac)'; }).join(', ');\n\t\t\t\t}\n\t\t\t\tsummary += ' = ' + total + '\u20ac' + RHC.period;\n\t\t\t\tmodalSummary.textContent = summary;\n\t\t\t\t\/\/ Salvesta avamise hetk botide ajaproovile.\n\t\t\t\twrapper.querySelector('#rhc-form-opened').value = Math.floor(Date.now() \/ 1000);\n\t\t\t\tmodal.style.display = 'flex';\n\t\t\t}\n\n\t\t\tfunction closeModal() {\n\t\t\t\tmodal.style.display = 'none';\n\t\t\t\tformMsg.className = 'rhc-form-msg';\n\t\t\t\tformMsg.textContent = '';\n\t\t\t}\n\n\t\t\topenBtn.addEventListener('click', openModal);\n\t\t\tmodalClose.addEventListener('click', closeModal);\n\t\t\tmodalOverlay.addEventListener('click', closeModal);\n\n\t\t\tform.addEventListener('submit', function(e) {\n\t\t\t\te.preventDefault();\n\t\t\t\tvar submitBtn = form.querySelector('.rhc-form-submit');\n\t\t\t\tvar origText = submitBtn.textContent;\n\t\t\t\tsubmitBtn.disabled = true;\n\t\t\t\tsubmitBtn.textContent = RHC.sending;\n\t\t\t\tformMsg.className = 'rhc-form-msg';\n\t\t\t\tformMsg.textContent = '';\n\n\t\t\t\tvar active = getActiveAddons();\n\t\t\t\tvar sum = active.reduce(function(s, a) { return s + a.price; }, 0);\n\t\t\t\tvar total = basePrice + sum;\n\n\t\t\t\tvar formData = new FormData();\n\t\t\t\tformData.append('action', 'riin_hooldus_calc_submit');\n\t\t\t\tformData.append('nonce', RHC.nonce);\n\t\t\t\tformData.append('name', form.name.value);\n\t\t\t\tformData.append('email', form.email.value);\n\t\t\t\tformData.append('website', form.website.value);\n\t\t\t\tformData.append('message', form.message.value);\n\t\t\t\tformData.append('total', total);\n\t\t\t\tformData.append('base_price', basePrice);\n\t\t\t\t\/\/ Anti-spam \u2014 honeypot ja timestamp.\n\t\t\t\tformData.append('website_url', form.website_url.value);\n\t\t\t\tformData.append('form_opened', form.form_opened.value);\n\t\t\t\tactive.forEach(function(a) {\n\t\t\t\t\tformData.append('addons[]', a.name + '|' + a.price);\n\t\t\t\t});\n\n\t\t\t\tfetch(RHC.ajaxUrl, {\n\t\t\t\t\tmethod: 'POST',\n\t\t\t\t\tbody: formData,\n\t\t\t\t\tcredentials: 'same-origin'\n\t\t\t\t})\n\t\t\t\t.then(function(r) { return r.json(); })\n\t\t\t\t.then(function(data) {\n\t\t\t\t\tif (data.success) {\n\t\t\t\t\t\tformMsg.className = 'rhc-form-msg success';\n\t\t\t\t\t\tformMsg.textContent = RHC.submitSuccess;\n\t\t\t\t\t\tform.reset();\n\t\t\t\t\t\tsetTimeout(closeModal, 3000);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tformMsg.className = 'rhc-form-msg error';\n\t\t\t\t\t\tformMsg.textContent = (data.data && typeof data.data === 'string') ? data.data : RHC.submitError;\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.catch(function() {\n\t\t\t\t\tformMsg.className = 'rhc-form-msg error';\n\t\t\t\t\tformMsg.textContent = RHC.submitError;\n\t\t\t\t})\n\t\t\t\t.finally(function() {\n\t\t\t\t\tsubmitBtn.disabled = false;\n\t\t\t\t\tsubmitBtn.textContent = origText;\n\t\t\t\t});\n\t\t\t});\n\t\t})();\n\t\t<\/script>\n\t\t\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>WordPress-sivustosi on kuin auto \u2014 se tarvitsee s\u00e4\u00e4nn\u00f6llist\u00e4 huoltoa toimiakseen hyvin. Ilman yll\u00e4pitoa sivusto hidastuu, altistuu haavoittuvuuksille ja lakkaa lopulta toimimasta kunnolla. Monet pienyritt\u00e4j\u00e4t ajattelevat, ett\u00e4 kun verkkosivusto on kerran valmis, se on siin\u00e4. Todellisuudessa WordPress vaatii jatkuvaa huomiota \u2014 ja t\u00e4ss\u00e4 selit\u00e4mme miksi. Mit\u00e4 tapahtuu, jos verkkosivustoa ei yll\u00e4pidet\u00e4? Kuvittele: avaat er\u00e4\u00e4n\u00e4 aamuna kotisivusi [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":12482,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[108,111,113],"tags":[],"class_list":["post-12481","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-turvallisuus","category-verkkosivusto","category-wordpress-fi"],"astra-portfolio-type":null,"astra-site-call-to-action":null,"_links":{"self":[{"href":"https:\/\/riin.eu\/fi\/wp-json\/wp\/v2\/posts\/12481","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/riin.eu\/fi\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/riin.eu\/fi\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/riin.eu\/fi\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/riin.eu\/fi\/wp-json\/wp\/v2\/comments?post=12481"}],"version-history":[{"count":3,"href":"https:\/\/riin.eu\/fi\/wp-json\/wp\/v2\/posts\/12481\/revisions"}],"predecessor-version":[{"id":12501,"href":"https:\/\/riin.eu\/fi\/wp-json\/wp\/v2\/posts\/12481\/revisions\/12501"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/riin.eu\/fi\/wp-json\/wp\/v2\/media\/12482"}],"wp:attachment":[{"href":"https:\/\/riin.eu\/fi\/wp-json\/wp\/v2\/media?parent=12481"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/riin.eu\/fi\/wp-json\/wp\/v2\/categories?post=12481"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/riin.eu\/fi\/wp-json\/wp\/v2\/tags?post=12481"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}