{"id":233599,"date":"2023-02-18T15:49:00","date_gmt":"2023-02-18T12:49:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=233599"},"modified":"2022-11-11T00:34:06","modified_gmt":"2022-11-10T21:34:06","slug":"kuinka-lisaetae-mukautettuja-paeaetepisteitae-tilini-sivulle-woocommercessa","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fi\/kuinka-lisaetae-mukautettuja-paeaetepisteitae-tilini-sivulle-woocommercessa\/","title":{"rendered":"Kuinka lis\u00e4t\u00e4 mukautettuja p\u00e4\u00e4tepisteit\u00e4 tilini -sivulle WooCommercessa"},"content":{"rendered":"\n<p>T\u00e4ss\u00e4 viestiss\u00e4 k\u00e4yd\u00e4\u00e4n l\u00e4pi, kuinka voit lis\u00e4t\u00e4 mukautettuja p\u00e4\u00e4tepisteit\u00e4 <a href=\"https:\/\/woocommerce.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">WooCommercen<\/a> &quot;Oma tili&quot; -sivulle. Voimme tehd\u00e4 sen saataville kahdella tavalla; joko omana mukautettuna v\u00e4lilehten\u00e4 tai painikkeena jokaiselle tilaukselle &quot;Tilaukset&quot; -v\u00e4lilehdell\u00e4.<\/p>\n<p>WooCommercen &quot;Oma tili&quot; -sivulla k\u00e4ytet\u00e4\u00e4n WordPressin sis\u00e4\u00e4nrakennettua p\u00e4\u00e4tepisteiden toimintoa, jonka avulla on helppo s\u00e4\u00e4t\u00e4\u00e4 tai lis\u00e4t\u00e4 omia p\u00e4\u00e4tepisteit\u00e4. Jos et ole perehtynyt p\u00e4\u00e4tepisteisiin, suosittelen lukemaan viestini, jossa k\u00e4sitell\u00e4\u00e4n yksityiskohtaisesti <a href=\"https:\/\/awhitepixel.com\/blog\/adding-custom-url-endpoints-with-wordpress-rewrite-api\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">mukautettujen p\u00e4\u00e4tepisteiden lis\u00e4\u00e4mist\u00e4 WordPressiin<\/a>.<\/p>\n<p>Se, miten saat mukautetun p\u00e4\u00e4tepisteesi k\u00e4ytt\u00e4j\u00e4n saataville &quot;Oma tili&quot; -sivulta, riippuu t\u00e4ysin verkkokauppasi tarpeista. Jos haluat vain yleisen sivun lis\u00e4tiedoille, voit lis\u00e4t\u00e4 t\u00e4m\u00e4n sivun omaksi v\u00e4lilehdeksi. Jos kuitenkin haluat, ett\u00e4 p\u00e4\u00e4tepisteesi liittyy jokaiseen tilaukseen, sinun on lis\u00e4tt\u00e4v\u00e4 p\u00e4\u00e4tepiste jokaiselle tilausriville &quot;Tilaukset&quot; -v\u00e4lilehdell\u00e4. T\u00e4ss\u00e4 viestiss\u00e4 tarkastellaan molempia tapoja.<\/p>\n<h2>Mukautetun v\u00e4lilehden ja p\u00e4\u00e4tepisteen lis\u00e4\u00e4minen &quot;Omaan tiliin&quot;<\/h2>\n<p>Oletetaan esimerkiksi, ett\u00e4 verkkokauppamme myy ohjelmistoja ja tarvitsemme paikan, jossa voimme n\u00e4ytt\u00e4\u00e4 asiakkaidemme lisenssiavaimet &quot;Oma tili&quot; -sivulla. Lis\u00e4\u00e4mme mukautetun v\u00e4lilehden &quot;Lisenssiavaimet&quot;, jonka pit\u00e4isi tulostaa kaikki kyseiselle k\u00e4ytt\u00e4j\u00e4lle rekister\u00f6idyt kelvolliset lisenssiavaimet.<\/p>\n<h3>Mukautetun p\u00e4\u00e4tepisteen lis\u00e4\u00e4minen<\/h3>\n<p>Teemaamme <code>functions.php<\/code>tai laajennuskoodiin lis\u00e4\u00e4mme ensin mukautetun p\u00e4\u00e4tepisteemme k\u00e4ytt\u00e4m\u00e4ll\u00e4 <code>add_rewrite_endpoint()<\/code>. Ensimm\u00e4isen\u00e4 perusteena t\u00e4lle tarjoamme ainutlaatuisen avaimen. Alla olevassa esimerkiss\u00e4 olen kutsunut p\u00e4\u00e4tepistett\u00e4 &quot; <code>license-keys<\/code>&quot;.<\/p>\n<pre><code>add_action('init', function() {\n    add_rewrite_endpoint('license-keys', EP_ROOT | EP_PAGES);\n});<\/code><\/pre>\n<p>Muista, ett\u00e4 WordPress lis\u00e4\u00e4 automaattisesti avaimemme kyselyvarseihin k\u00e4ytt\u00e4ess\u00e4\u00e4n <code>add_rewrite_endpoint()<\/code>, joten sinun ei tarvitse suodattaa <code>query_vars<\/code>.<\/p>\n<p>Jos kohtaat &quot;404 ei l\u00f6ydy&quot; -virheit\u00e4, sinun on p\u00e4ivitett\u00e4v\u00e4 pysyv\u00e4t linkit. Voit tehd\u00e4 t\u00e4m\u00e4n siirtym\u00e4ll\u00e4 kohtaan Asetukset &gt; Pysyv\u00e4t linkit ja napsauttamalla Tallenna. Aina kun teemme muutoksia pysyviin linkkeihin tai p\u00e4\u00e4tepisteisiin, meid\u00e4n on teht\u00e4v\u00e4 t\u00e4m\u00e4.<\/p>\n<h3>Mukautetun v\u00e4lilehden lis\u00e4\u00e4minen<\/h3>\n<p>Seuraava vaihe on v\u00e4lilehden lis\u00e4\u00e4minen &quot;Oma tili&quot; -sivun v\u00e4lilehdille. Teemme t\u00e4m\u00e4n suodattimen kanssa <code>woocommerce_account_menu_items<\/code>. Suodattimen tuottama taulukko sis\u00e4lt\u00e4\u00e4 kaikki sarkainn\u00e4pp\u00e4imet ja niit\u00e4 vastaavat tunnisteet.<\/p>\n<p>Voit yksinkertaisesti lis\u00e4t\u00e4 v\u00e4lilehden taulukon loppuun, mutta jos haluat enemm\u00e4n hallita sit\u00e4, miss\u00e4 v\u00e4lilehden pit\u00e4isi n\u00e4ky\u00e4, sinun on manipuloitava taulukkoa PHP-funktioilla. Yll\u00e4 olevassa esimerkiss\u00e4 haluan sen loppuun, mutta ennen &quot;Kirjaudu ulos&quot; -v\u00e4lilehte\u00e4. Joten poistan &quot;Kirjaudu ulos&quot; -v\u00e4lilehden ulos, lis\u00e4\u00e4n v\u00e4lilehden ja laitan sitten &quot;Kirjaudu ulos&quot; -v\u00e4lilehden takaisin.<\/p>\n<pre><code>add_filter('woocommerce_account_menu_items', function($items) {\n    $logout = $items['customer-logout'];\n    unset($items['customer-logout']);\n    $items['license-keys'] = __('License keys', 'txtdomain');\n    $items['customer-logout'] = $logout;\n    return $items;\n});<\/code><\/pre>\n<p>Jos p\u00e4ivit\u00e4t Oma tili -sivusi nyt, sinun pit\u00e4isi n\u00e4hd\u00e4 v\u00e4lilehti ennen &quot;Kirjaudu ulos&quot;. Napsauttamalla sit\u00e4 p\u00e4\u00e4set URL-osoitteeseen &quot; <code>&lt;example.com&gt;\/my-account\/license-keys\/<\/code>&quot;. Et kuitenkaan n\u00e4e mit\u00e4\u00e4n muutosta, kun napsautat v\u00e4lilehte\u00e4. T\u00e4m\u00e4 johtuu siit\u00e4, ett\u00e4 emme ole m\u00e4\u00e4ritt\u00e4neet, mit\u00e4 tulostetaan. Se on seuraava askelemme.<\/p>\n<h3>Muokatun v\u00e4lilehden sis\u00e4ll\u00f6n render\u00f6iminen<\/h3>\n<p>WooCommerce tarjoaa koukun <code>woocommerce_account_&lt;endpoint key&gt;_endpoint<\/code>sis\u00e4ll\u00f6n tulostamiseen &quot;Oma tilille&quot;, jossa korvaat sen mukautetulla p\u00e4\u00e4tepisteavaimella. Esimerkiss\u00e4mme oikea koukku olisi <code>woocommerce_account_license-keys_endpoint<\/code>.<\/p>\n<pre><code>add_action('woocommerce_account_license-keys_endpoint', function() {\n    _e('Your license keys', 'txtdomain');\n});<\/code><\/pre>\n<p>Mit\u00e4 tulee v\u00e4lilehden todelliseen tuottoon, t\u00e4m\u00e4 on t\u00e4ysin sinun p\u00e4\u00e4tett\u00e4viss\u00e4si. Voit tehd\u00e4 kyselyn, hakea tietoja ja sitten tulostaa sen. On kuitenkin suositeltavaa k\u00e4ytt\u00e4\u00e4 malleja HTML:n tulostamiseen sen sijaan, ett\u00e4 koko HTML tulostettaisiin suoraan funktiossamme. WooCommerce tarjoaa erinomaiset toiminnot malleille, joten k\u00e4yt\u00e4mme sit\u00e4.<\/p>\n<p>K\u00e4ytt\u00e4m\u00e4ll\u00e4 <code>wc_get_template()<\/code>voimme tarjota mukautetun mallin (sen ei tarvitse olla yksi WooCommercen malleista). Toisena argumenttina voimme m\u00e4\u00e4ritell\u00e4 muuttujat, jotka v\u00e4litet\u00e4\u00e4n mallitiedostoon. WooCommercen vakiintuneen rakenteen mukaisesti luomme mukautetun WooCommerce-mallin, jonka me <code>call license-keys.php<\/code>kansioon <code>&lt;theme&gt;\/woocommerce\/myaccount\/<\/code>.<\/p>\n<pre><code>add_action('woocommerce_account_license-keys_endpoint', function() {\n    $licenses = [];  \/\/ Replace with function to return licenses for current logged in user\n    wc_get_template('myaccount\/license-keys.php', [\n        'licenses' =&gt; $licenses\n    ]);\n});<\/code><\/pre>\n<p>Mene eteenp\u00e4in ja luo tyhj\u00e4 tiedosto <code>&lt;theme&gt;\/woocommerce\/myaccount\/license-keys.php<\/code>. T\u00e4m\u00e4n sis\u00e4ll\u00e4 voit m\u00e4\u00e4ritt\u00e4\u00e4 mukautetun v\u00e4lilehden tulosteen. Meill\u00e4 on my\u00f6s p\u00e4\u00e4sy kaikkiin muuttujiin, jotka v\u00e4litimme taulukossa <code>wc_get_template()<\/code>. Joten meid\u00e4n tapauksessamme <code>$licenses<\/code>muuttuja on saatavilla ja t\u00e4ytet\u00e4\u00e4n tiedoilla, jotka v\u00e4litimme p\u00e4\u00e4tepistefunktiostamme. Voit v\u00e4litt\u00e4\u00e4 niin monta muuttujaa kuin tarvitset.<\/p>\n<h2>P\u00e4\u00e4tepisteen ja mukautetun painikkeen lis\u00e4\u00e4minen jokaiseen tilaukseen &quot;Oma tili&quot; -sivulla<\/h2>\n<p>Jatketaan samalla esimerkill\u00e4 yll\u00e4; olettaen, ett\u00e4 verkkokauppasi myy ohjelmistoja ja sinun on n\u00e4ytett\u00e4v\u00e4 asiakkaan lisenssiavaimet jossain. Mutta sen sijaan, ett\u00e4 lis\u00e4isit mukautetun v\u00e4lilehden n\u00e4ytt\u00e4m\u00e4\u00e4n ne kaikki, ehk\u00e4 haluat mieluummin n\u00e4ytt\u00e4\u00e4 tiettyyn tilaukseen liitetyt lisenssiavaimet? Voisimme lis\u00e4t\u00e4 mukautetun painikkeen &quot;N\u00e4yt\u00e4&quot;-kohdan viereen Oma tili -sivun tilauskatsauksessa:<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-152793-61e4fade776a4.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-152793-61e4fade776a4.png\" alt=\"Kuinka lis\u00e4t\u00e4 mukautettuja p\u00e4\u00e4tepisteit\u00e4 tilini -sivulle WooCommercessa\" ><\/a><\/p>\n<p>Aloitetaan tekem\u00e4ll\u00e4 sama kuin edell\u00e4: rekister\u00f6id\u00e4\u00e4n mukautettu p\u00e4\u00e4tepiste:<\/p>\n<h3>Rekister\u00f6i mukautettu p\u00e4\u00e4tepiste<\/h3>\n<pre><code>add_action('init', function() {\n    add_rewrite_endpoint('license-keys', EP_ROOT | EP_PAGES);\n});<\/code><\/pre>\n<p>\u00c4l\u00e4 unohda huuhdella pysyv\u00e4t linkit (siirry kohtaan Asetukset &gt; Pysyv\u00e4t linkit ja paina Tallenna-painiketta)!<\/p>\n<h3>Lis\u00e4\u00e4 mukautettu toiminto (ja painike)<\/h3>\n<p>Seuraava vaihe on painikkeen lis\u00e4\u00e4minen suodattimen avulla <code>woocommerce_my_account_my_orders_actions<\/code>. Toisena argumenttina t\u00e4lle suodattimelle saat tilausobjektin. Se on eritt\u00e4in hy\u00f6dyllist\u00e4; Haluamme tarkistaa, ett\u00e4 tilaus on valmis ja maksettu, jotta emme n\u00e4yt\u00e4 maksamattomien tai peruutettujen tilausten lisenssiavaimia. Tilausobjektin avulla saamme my\u00f6s tilaustunnuksen, joka on todenn\u00e4k\u00f6isimmin v\u00e4ltt\u00e4m\u00e4t\u00f6n tilauksen tuotteiden lisenssiavainten kyselyyn. Alla olevasta koodista tarkistan vain, onko tilauksen tila valmis vai ei. Sinun on luultavasti lis\u00e4tt\u00e4v\u00e4 oma koodisi tarkistaaksesi, onko tilausta kohti n\u00e4ytett\u00e4v\u00e4\u00e4 lisenssiavaimia.<\/p>\n<p>Jotta voimme lis\u00e4t\u00e4 mukautetun toiminnon, meid\u00e4n on annettava yksil\u00f6llinen avain ja taulukko, jossa on itsest\u00e4\u00e4n selvi\u00e4 arvoja kohteille &quot; <code>url<\/code>&quot; ja &quot; <code>name<\/code>&quot;. Mit\u00e4 tulee URL-osoitteeseen, k\u00e4yt\u00e4mme WordPressin toimintoa p\u00e4\u00e4tepisteen URL-osoitteen palauttamiseen: <code>wc_get_endpoint_url()<\/code>. Koska meid\u00e4n on v\u00e4litett\u00e4v\u00e4 my\u00f6s tilaustunnus, asetamme tilaustunnuksen t\u00e4m\u00e4n funktion toiseksi argumentiksi, mik\u00e4 johtaa seuraavan URL-osoitteen: <code>&lt;example.com&gt;\/my-account\/license-keys\/&lt;order ID&gt;\/<\/code>.<\/p>\n<pre><code>add_filter('woocommerce_my_account_my_orders_actions', function($actions, $order) {\n    if ($order-&gt;get_status() == 'completed') {\n        $actions['view-license-keys'] = [\n            'url' =&gt; wc_get_endpoint_url('license-keys', $order-&gt;get_id()),\n            'name' =&gt; __('View license keys', 'txtdomain')\n        ];\n    }\n    return $actions;\n}, 10, 2);<\/code><\/pre>\n<p>T\u00e4m\u00e4n pit\u00e4isi lis\u00e4t\u00e4 uusi painike jokaiselle valmiille tilaukselle:<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-152793-61e4fadf850fe.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-152793-61e4fadf850fe.png\" alt=\"Kuinka lis\u00e4t\u00e4 mukautettuja p\u00e4\u00e4tepisteit\u00e4 tilini -sivulle WooCommercessa\" ><\/a><\/p>\n<p>Nyt tarvitsemme vain mallin, joka n\u00e4ytet\u00e4\u00e4n p\u00e4\u00e4tepisteelle <code>license-keys<\/code>.<\/p>\n<h3>Loppupisteen render\u00f6iminen<\/h3>\n<p>P\u00e4\u00e4tepisteiden toimintatapa WordPressiss\u00e4 on se, ett\u00e4 p\u00e4\u00e4tepisteen j\u00e4lkeen tuleva on kyseisen kyselymuuttujan arvo. tai toisin sanoen; kun k\u00e4ymme esimerkiksi URL-osoitteessa, <code>&lt;example.com&gt;\/my-account\/license-keys\/204\/<\/code>jota voimme k\u00e4ytt\u00e4\u00e4 <code>get_query_var('license-keys')<\/code>tilaustunnuksen saamiseen; 204.<\/p>\n<p>Muokatun p\u00e4\u00e4tepisteemme sis\u00e4ll\u00f6n tuottamiseksi kiinnit\u00e4mme siihen, <code>woocommerce_account_&lt;endpoint key&gt;_endpoint<\/code>mik\u00e4 meid\u00e4n tapauksessamme olisi <code>woocommerce_account_license-keys_endpoint<\/code>. T\u00e4m\u00e4n toiminnon sis\u00e4ll\u00e4 voimme <code>get_query_var()<\/code>hankkia tilaustunnuksen ja t\u00e4ll\u00e4 kyselyll\u00e4 tilauksen mille tahansa lisenssiavaimelle.<\/p>\n<pre><code>add_action('woocommerce_account_license-keys_endpoint', function() {\n    $order_id = get_query_var('license-keys');\n    $licenses = [];  \/\/ Function to return licenses for order ID\n\u00a0\n    wc_get_template('myaccount\/license-keys.php', [\n        'licenses' =&gt; $licenses,\n        'order_id' =&gt; $order_id\n    ]);\n});<\/code><\/pre>\n<p>Muokatun mallisi &quot; <code>myaccount\/license-keys.php<\/code>&quot; todellinen HTML-tulostus riippuu t\u00e4ysin tarpeistasi. Oletettavasti olisit k\u00e4ytt\u00e4nyt tilaustunnusta ker\u00e4t\u00e4ksesi lisenssiavaimet johonkin taulukkoon ja v\u00e4litt\u00e4nyt sen malliin mukavan tulosteen saamiseksi. Yll\u00e4 olevassa koodissa v\u00e4lit\u00e4n my\u00f6s tilaustunnuksen, jotta se on k\u00e4ytett\u00e4viss\u00e4 <code>$order_id<\/code>mallin sis\u00e4ll\u00e4 (esim. mukavan otsikon tulostamiseen &quot;Tilauksen #204 lisenssiavaimet&quot;).<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/awhitepixel.com\" class=\"external external_icon\">awhitepixel.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>T\u00e4m\u00e4 viesti selitt\u00e4\u00e4 kuinka lis\u00e4t\u00e4 mukautettuja p\u00e4\u00e4tepisteit\u00e4 WooCommercen &#8221;Oma tilille&#8221;; joko omana v\u00e4lilehten\u00e4 tai jokaisen tilauksen painikkeena &#8221;Tilaukset&#8221;-v\u00e4lilehdell\u00e4.<\/p>\n","protected":false},"author":1,"featured_media":223696,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[813,1110,843,813,843,854,854,864,864],"tags":[1166],"class_list":{"0":"post-233599","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","6":"hentry","7":"category-laajennuksia","8":"category-n-a","9":"category-opetusohjelmia","12":"category-woocommerce-5","14":"category-wordpress-5","16":"tag-affiai-fi"},"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts\/233599","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/comments?post=233599"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts\/233599\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/media\/223696"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/media?parent=233599"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/categories?post=233599"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/tags?post=233599"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}