{"id":233788,"date":"2023-02-22T12:35:00","date_gmt":"2023-02-22T09:35:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=233788"},"modified":"2022-11-11T12:24:30","modified_gmt":"2022-11-11T09:24:30","slug":"kuidas-lisada-woocommercei-tooteandmete-metakasti-kohandatud-vaelju-ja-vahekaarte-koodi-jaergi","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/et\/kuidas-lisada-woocommercei-tooteandmete-metakasti-kohandatud-vaelju-ja-vahekaarte-koodi-jaergi\/","title":{"rendered":"Kuidas lisada WooCommerce&#8217;i tooteandmete metakasti kohandatud v\u00e4lju ja vahekaarte koodi j\u00e4rgi"},"content":{"rendered":"\n<p>Selles postituses \u00f5pime, kuidas lisada kohandatud metav\u00e4lju WooCommerce&#8217;i tooteandmete metakasti; kuidas lisada v\u00e4lju ja kuidas lisada oma kohandatud vahekaart. Me k\u00e4sitleme \u00fcksikasjalikult, kuidas v\u00e4lju lisada, kuhu neid lisada, kuidas neid salvestada ja l\u00f5puks, kuidas neid kasutajaliideses kuvada.<\/p>\n<h2>Kohandatud v\u00e4ljade lisamine olemasolevatele paneelidele<\/h2>\n<p>K\u00f5igepealt vaatame, kuidas olemasolevatele paneelidele v\u00e4lja lisada. Peame haakima kahte konksu; \u00fcks v\u00e4lja v\u00e4ljastamiseks ja teine \u200b\u200bselle v\u00e4\u00e4rtuse salvestamiseks. Esimene konks s\u00f5ltub sellest, millisel vahekaardil soovite oma v\u00e4lja kuvada.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-152172-61e4d3f68509c.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-152172-61e4d3f68509c.png\" alt=\"Kuidas lisada WooCommerce&#039;i tooteandmete metakasti kohandatud v\u00e4lju ja vahekaarte koodi j\u00e4rgi\" ><\/a><\/p>\n<p>Tooteandmete metakast<\/p>\n<p>Pidage meeles, et vahekaartide n\u00e4htavus erineb olenevalt toote t\u00fc\u00fcbist. N\u00e4iteks vahekaart \u201e\u00dcldine&quot; eemaldatakse, kui l\u00fclitute r\u00fchmitatud tootet\u00fc\u00fcbile. Seega peaksite mitte ainult arvestama, kuhu teie kohandatud v\u00e4ljad loogiliselt sobivad, vaid ka paneeli, mis on n\u00e4htav k\u00f5igi soovitud tootet\u00fc\u00fcpide jaoks. on k\u00f5ige \u00fcldisemate saadaolevate konksude loend:<\/p>\n<ul>\n<li><code>woocommerce_product_options_general_product_data<\/code>(&quot;\u00dcldine&quot;)<\/li>\n<li><code>woocommerce_product_options_inventory_product_data<\/code>(&quot;Inventar&quot;<\/li>\n<li><code>woocommerce_product_options_shipping<\/code>(&quot;Kohaletoimetamine&quot;)<\/li>\n<li><code>woocommerce_product_options_related<\/code>(&quot;Lingitud tooted&quot;)<\/li>\n<li><code>woocommerce_product_options_attributes<\/code>(&quot;Atribuudid&quot;)<\/li>\n<li><code>woocommerce_product_options_advanced<\/code>(&quot;T\u00e4psem&quot;<\/li>\n<\/ul>\n<h3>Vormi sisendi lisamine<\/h3>\n<p>Mis puudutab vormisisendi v\u00e4ljastamist, saate vormisisestuse HTML-i k\u00e4sitsi v\u00e4ljastada (nt <code>&lt;input type=\"text\"...&gt;<\/code>), kuid WooCommerce pakub lihtsaid funktsioone mis tahes t\u00fc\u00fcpi v\u00e4ljade h\u00f5lpsaks lisamiseks. Soovitan neid kasutada. Vaata siit WooCommerce&#8217;i <a href=\"https:\/\/docs.woocommerce.com\/wc-apidocs\/source-function-woocommerce_wp_text_input.html\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">\u00fclevaadet<\/a> k\u00f5igist v\u00f5imalikest sisestust\u00fc\u00fcpidest ja sellest, milliseid argumente saad v\u00e4ljundi juhtimiseks edastada.<\/p>\n<p>Selle \u00f5petuse osas lisan laoseisu vahekaardile lihtsa tekstisisestuse, et kirjutada igas pakendis olevate \u00fcksuste arv. Mis puutub v\u00f5tmesse, millena teie kohandatud v\u00e4\u00e4rtus salvestatakse, lisage alati selle ette alakriips &quot;_&quot;, minu puhul on see &quot;_number_in_package&quot;:<\/p>\n<pre><code>add_action('woocommerce_product_options_inventory_product_data', function() {\n    woocommerce_wp_text_input([\n            'id' =&gt; '_number_in_package',\n            'label' =&gt; __('Number in package', 'txtdomain'),\n    ]);\n});<\/code><\/pre>\n<p>Salvestage ja muutke toodet. Peaksite n\u00e4gema oma kohandatud v\u00e4lja vahekaardi Varud allosas:<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-152172-61e4d3f74b757.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-152172-61e4d3f74b757.png\" alt=\"Kuidas lisada WooCommerce&#039;i tooteandmete metakasti kohandatud v\u00e4lju ja vahekaarte koodi j\u00e4rgi\" ><\/a><\/p>\n<p>Allossa on lisatud kohandatud v\u00e4li &quot;Arv pakendis&quot;.<\/p>\n<h3>M\u00e4rkus p\u00f5llu n\u00e4htavuse kohta s\u00f5ltuvalt toote t\u00fc\u00fcbist<\/h3>\n<p>WooCommerce&#8217;i tooteandmete metakastis on palju Javascripti, mis peidab ja n\u00e4itab nii v\u00e4lju kui ka vahelehti\/paneele. Saate seda h\u00f5lpsasti kasutada, kui soovite, et teie v\u00e4li oleks n\u00e4htav ainult teatud tootet\u00fc\u00fcpide puhul, lisades oma v\u00e4ljale konkreetsed klassinimed.<\/p>\n<p>Oletame, et soovite, et teie v\u00e4lja kuvatakse ainult siis, kui toode on t\u00fc\u00fcp lihtne toode, v\u00f5i soovite, et see oleks peidetud, kui toode on muutuv toode. WooCommerce kuulab konkreetseid klassinimesid, nagu <code>show_if_&lt;producttype&gt;<\/code>ja, <code>hide_if_&lt;producttype&gt;<\/code>ning saate mitut klassi kombineerida, et t\u00e4psustada, millal teie v\u00e4li peaks olema peidetud v\u00f5i n\u00e4htav.<\/p>\n<p>N\u00e4iteks kui ma tahan, et mu v\u00e4li oleks n\u00e4htav ainult lihtsate toodete puhul; Lisan selle v\u00e4ljale &quot; <code>wrapper_class<\/code>&quot; oma v\u00e4lja sisendisse:<\/p>\n<pre><code>add_action('woocommerce_product_options_inventory_product_data', function() {\n    woocommerce_wp_text_input([\n        'id' =&gt; '_number_in_package',\n        'label' =&gt; __('Number in package', 'txtdomain'),\n        'wrapper_class' =&gt; 'show_if_simple'\n    ]);\n});<\/code><\/pre>\n<p>V\u00f5ite m\u00e4\u00e4rata <code>wrapper_class<\/code>ka n\u00e4iteks &#8216; <code>show_if_simple show_if_grouped<\/code>&#8216;, et v\u00e4li oleks n\u00e4htav ainult nende toodete puhul, mis on kas lihtsad v\u00f5i grupeeritud. Proovige seda ise!<\/p>\n<h3>Kohandatud v\u00e4lja salvestamine<\/h3>\n<p>Praeguse seisuga ei salvestata midagi, mille sisestate oma v\u00e4ljale. Teeme seda j\u00e4rgmisena. Haakime PHP globaalse (vormi esitamise) <code>woocommerce_process_product_meta<\/code>v\u00e4\u00e4rtuse ja salvestame selle .<code>$_POST<\/code><\/p>\n<pre><code>add_action('woocommerce_process_product_meta', function($post_id) {\n    $product = wc_get_product($post_id);\n    $num_package = isset($_POST['_number_in_package'])? $_POST['_number_in_package']: '';\n    $product-&gt;update_meta_data('_number_in_package', sanitize_text_field($num_package));\n    $product-&gt;save();\n});<\/code><\/pre>\n<p>Lubage mul \u00fclaltoodud koodi kiiresti selgitada. Saate v\u00e4lja lihtsalt salvestada, kasutades <code>update_post_meta()<\/code>, kuid WooCommerce&#8217;i uuemates versioonides on toote k\u00e4itlemise metat oluliselt t\u00e4iustatud. Kuni teil on tooteobjekt (selle saame, kui helistate <code>wc_get_product()<\/code>postituse ID-ga), saate h\u00f5lpsalt manipuleerida objekti mis tahes tooteteabega ja l\u00f5puks helistada <code>save()<\/code>muudatuste v\u00e4rskendamiseks. See on v\u00e4ga kasulik, eriti kui soovite salvestada mitu v\u00e4lja \u2013 sellisel juhul ei pea te iga v\u00e4lja jaoks andmebaasitoiminguid k\u00e4ivitama, vaid viimane kord, kui helistate <code>save()<\/code>.<\/p>\n<p>Kasutage <code>update_meta_data()<\/code>objektil iga metaandmete jaoks, mida soovite salvestada.<\/p>\n<p>\u00dclaltoodud funktsiooniga peaks teie v\u00e4li n\u00fc\u00fcd salvestama, kui v\u00e4rskendate seda toote redigeerimisel! Samuti pange t\u00e4hele, et kasutades v\u00e4lja v\u00e4ljastamiseks WooCommerce&#8217;i funktsioone, ei pea te enne v\u00e4lja v\u00e4ljastamist k\u00e4sitsi v\u00e4lja v\u00e4\u00e4rtust hankima \u2013 see on t\u00e4isautomaatne.<\/p>\n<h3>Kohandatud v\u00e4lja v\u00e4ljastamine kasutajaliidesesse<\/h3>\n<p>Esimene samm on v\u00e4lja selgitada, millist konksu soovite kohandatud v\u00e4lja v\u00e4ljastamiseks kasutada. WooCommerce pakub palju saadaolevaid konkse, et juhtida konkreetset kohta, kus soovite v\u00e4ljundit. Kui te pole kindel, vaadake <code>plugins\/woocommerce\/templates\/<\/code>neid faile ja leiate h\u00f5lpsalt sobiva konksu. V\u00f5ite ka malli alistada ja lisada mallisse v\u00e4ljundi, kuid alati soovitan selle asemel kasutada konkse.<\/p>\n<p>Mis puutub minusse, siis ma tahan, et minu kohandatud v\u00e4li v\u00e4ljastataks \u00fches tootes meta div sees \u2013 seal, kus WooCommerce v\u00e4ljastab SKU ja kategooria. Selleks kasutan konksu <code>woocommerce_product_meta_start<\/code>. Konksude sees (nagu peaaegu k\u00f5igi mallikonksude puhul) p\u00e4\u00e4sete juurde globaalsele postitusobjektile. J\u00e4rgin sama rusikareeglit nagu oma p\u00f5llu p\u00e4\u00e4stmisel; kasutage <code>get_meta()<\/code>kohandatud v\u00e4lja saamiseks tooteobjektil:<\/p>\n<pre><code>add_action('woocommerce_product_meta_start', function() {\n    global $post;\n    $product = wc_get_product($post-&gt;ID);\n    $num_package = $product-&gt;get_meta('_number_in_package');\n    if (!empty($num_package)) {\n        printf('&lt;div class=\"custom-sku\"&gt;%s: %s&lt;\/div&gt;', __('Number in package', 'txtdomain'), $num_package);\n    }\n});<\/code><\/pre>\n<h2>Kohandatud vahekaardi ja paneeli lisamine tooteandmete metakasti<\/h2>\n<p>Kui soovite lisada kohandatud v\u00e4ljade kogu, mis loogiliselt kokku kuuluvad, v\u00f5iks olla hea m\u00f5te r\u00fchmitada need kohandatud vahekaardile. Kohandatud vahekaardi lisamiseks tooteandmete metakasti peame haakima vahekaardi enda lisamise filtri ja konksu paneeli sisu v\u00e4ljastamiseks. L\u00f5puks peame oma p\u00f5ldude p\u00e4\u00e4stmiseks siiski lisama sama konksu nagu \u00fclal.<\/p>\n<p>N\u00e4iteks lisan ma kohandatud paneeli nimega &quot;Lisainfo&quot;, kuhu tahan lisada tekstisisestuse, m\u00e4rkeruudu ja numbrisisestuse.<\/p>\n<p>Esiteks filtreerime <code>woocommerce_product_data_tabs<\/code>ja lisame oma vahekaardi selle massiivi.<\/p>\n<pre><code>add_filter('woocommerce_product_data_tabs', function($tabs) {\n    $tabs['additional_info'] = [\n        'label' =&gt; __('Additional info', 'txtdomain'),\n        'target' =&gt; 'additional_product_data',\n        'class' =&gt; ['hide_if_external'],\n        'priority' =&gt; 25\n    ];\n    return $tabs;\n});<\/code><\/pre>\n<p>Siin on m\u00f5ned kasulikud argumendid. <code>class<\/code>S\u00f5ltuvalt toote t\u00fc\u00fcbist saate vahekaardi n\u00e4htavuse juhtimiseks kasutada n\u00e4iteks klahvi &quot; &quot;. <a href=\"#field-visibility\">Kui see j\u00e4i kahe silma vahele, vaadake \u00fclalmainitud<\/a> jaotist v\u00e4ljade n\u00e4htavuse kohta. Kuid pidage meeles, et vahekaartidel peate esitama klassid massiivina, mitte stringina. Saate sisestada ka m\u00e4rgi <code>priority<\/code>, et otsustada, kus teie vahekaart peaks ilmuma. Kasutades nt 25, asetatakse vahekaart kohe p\u00e4rast &#8220;Inventar&#8221;.<\/p>\n<p>Vaikimisi kuvatakse teie vahekaardil mutriv\u00f5ti ikoonina. Kahjuks pole (praegu) mingit v\u00f5imalust seda filtri kaudu juhtida. Kui see on teie jaoks oluline, saate lisada administraatori CSS-i ja lisada vahekaardile teise klassi. <a href=\"https:\/\/github.com\/woocommerce\/woocommerce-icons\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Siin on \u00fclevaade<\/a> WooCommerce&#8217;is saadaolevatest ikoonidest.<\/p>\n<h3>Paneeli v\u00e4ljund<\/h3>\n<p>J\u00e4rgmine samm on <code>woocommerce_product_data_panels<\/code>paneeli sisu k\u00fclge haakimine ja selle v\u00e4ljastamine. Oluline m\u00e4rkus on siinkohal v\u00e4ljundi alustamine <code>div<\/code>atribuudiga <code>id<\/code>a sama nimega atribuudiga, mille sisestasite vahekaartide v\u00f5tmena (minu puhul &#8216; <code>additional_info<\/code>&#8216;). Sisu osas on see teie otsustada \u2013 v\u00f5ite lisada mis tahes HTML-i, kuid soovitan kasutada vormiv\u00e4ljade v\u00e4ljastamiseks WooCommerce&#8217;i funktsioone. Samad eelised p\u00f5ldude peitmisel v\u00f5i n\u00e4itamisel t\u00f6\u00f6tavad ka siin.<\/p>\n<pre><code>add_action('woocommerce_product_data_panels', function() {\n    ?&gt;&lt;div id=\"additional_product_data\" class=\"panel woocommerce_options_panel hidden\"&gt;&lt;?php\n\u00a0\n    woocommerce_wp_text_input([\n        'id' =&gt; '_dummy_text_input',\n        'label' =&gt; __('Dummy text input', 'txtdomain'),\n        'wrapper_class' =&gt; 'show_if_simple',\n    ]);\n    woocommerce_wp_checkbox([\n        'id' =&gt; '_dummy_checkbox',\n        'label' =&gt; __('Dummy checkbox', 'txtdomain'),\n        'wrapper_class' =&gt; 'hide_if_grouped',\n    ]);\n    woocommerce_wp_text_input([\n        'id' =&gt; '_dummy_number_input',\n        'label' =&gt; __('Dummy number input', 'txtdomain'),\n        'type' =&gt; 'number',\n        'custom_attributes' =&gt; [\n            'step' =&gt; '1',\n            'min' =&gt; '0'\n        ]\n    ]);\n    ?&gt;&lt;\/div&gt;&lt;?php\n});<\/code><\/pre>\n<p>P\u00e4rast salvestamist peaksite n\u00fc\u00fcd n\u00e4gema vahekaarti ja selle sisu tooteandmete metakastis (kui toode pole muidugi v\u00e4line toode).<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-152172-61e4d3f80e5c5.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-152172-61e4d3f80e5c5.png\" alt=\"Kuidas lisada WooCommerce&#039;i tooteandmete metakasti kohandatud v\u00e4lju ja vahekaarte koodi j\u00e4rgi\" ><\/a><\/p>\n<p>J\u00e4\u00e4b \u00fcle vaid salvestada kohandatud v\u00e4ljadele sisestatud andmed ja selleks kasutame sama protsessi nagu \u00fclal:<\/p>\n<pre><code>add_action('woocommerce_process_product_meta', function($post_id) {\n    $product = wc_get_product($post_id);\n    $product-&gt;update_meta_data('_dummy_text_input', sanitize_text_field($_POST['_dummy_text_input']));\n\u00a0\n    $dummy_checkbox = isset($_POST['_dummy_checkbox'])? 'yes': '';\n    $product-&gt;update_meta_data('_dummy_checkbox', $dummy_checkbox);\n\u00a0\n    $product-&gt;update_meta_data('_dummy_number_input', sanitize_text_field($_POST['_dummy_number_input']));\n    $product-&gt;save();\n});<\/code><\/pre>\n<p>M\u00e4rkus. WooCommerce&#8217;is kehtib \u00fcldreegel, mille kohaselt k\u00f5ik m\u00e4rkeruudud salvestatakse kui &quot; <code>yes<\/code>&quot;, kui need on m\u00e4rgitud, v\u00f5i t\u00fchja stringina, kui need on m\u00e4rkimata. J\u00e4rgides WooCommerce&#8217;i reeglit ja salvestades m\u00e4rgitud m\u00e4rkeruudu kui &quot; <code>yes<\/code>&quot;, tagab see, et minu <code>woocommerce_wp_checkbox()<\/code>v\u00e4lja praeguse v\u00e4\u00e4rtuse hankimisel t\u00f6\u00f6tab see etten\u00e4htud viisil.<\/p>\n<h2>J\u00e4reldus<\/h2>\n<p>Selles postituses n\u00e4itan, kuidas lisada oma kohandatud v\u00e4lju WooCommerce&#8217;i tooteandmete metakasti, kuidas neid salvestada, kuidas kontrollida nende n\u00e4htavust, ja n\u00e4itan lihtsat n\u00e4idet oma v\u00e4lja v\u00e4ljundi kohta kasutajaliideses. N\u00e4itasin ka, kuidas lisada metakasti kohandatud vahekaarti ja lisada sinna oma v\u00e4ljad. Loodan, et see aitas teil WooCommerce&#8217;i ise kohandada!<\/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>Selles postituses \u00f5pime, kuidas lisada kohandatud metav\u00e4lju ja vahekaarte WordPressi WooCommerce&#8217;i tooteandmete metakasti koos koodiga.<\/p>\n","protected":false},"author":1,"featured_media":224911,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[718,894,718,894,1110,842,812,812,842,853,853,863,863],"tags":[1165],"class_list":{"0":"post-233788","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","6":"hentry","7":"category-arendaja","8":"category-kood","11":"category-n-a","12":"category-opetused","13":"category-pistikprogrammid","16":"category-woocommerce-4","18":"category-wordpress-4","20":"tag-affiai-et"},"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts\/233788","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/comments?post=233788"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts\/233788\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/media\/224911"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/media?parent=233788"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/categories?post=233788"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/tags?post=233788"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}