{"id":233669,"date":"2023-02-19T13:26:00","date_gmt":"2023-02-19T10:26:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=233669"},"modified":"2022-11-11T08:45:02","modified_gmt":"2022-11-11T05:45:02","slug":"crie-abas-personalizadas-de-produtos-woocommerce-com-campos-personalizados-avancados","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/pt-pt\/crie-abas-personalizadas-de-produtos-woocommerce-com-campos-personalizados-avancados\/","title":{"rendered":"Crie abas personalizadas de produtos WooCommerce com campos personalizados avan\u00e7ados"},"content":{"rendered":"\n<p>Ao visualizar um produto no <a href=\"https:\/\/woocommerce.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">WooCommerce<\/a>, as informa\u00e7\u00f5es sobre o produto s\u00e3o exibidas nas guias. Essas abas s\u00e3o fixas e geradas pelo WooCommerce, fora do seu controle. Esta postagem mostrar\u00e1 como adicionar c\u00f3digo que permita aos autores adicionar guias personalizadas com conte\u00fado personalizado aos produtos.<\/p>\n<p>Isen\u00e7\u00e3o de responsabilidade: Existe uma extens\u00e3o WooCommerce chamada <a href=\"https:\/\/woocommerce.com\/products\/woocommerce-tab-manager\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">WooCommerce Tab Manager<\/a> que fornece esse recurso. N\u00e3o \u00e9 gr\u00e1tis, no entanto. Eu mesmo n\u00e3o testei, mas at\u00e9 onde posso ver, ele suporta apenas um editor WYSIWYG (o que voc\u00ea v\u00ea \u00e9 o que voc\u00ea obt\u00e9m) para o conte\u00fado da guia. Este post \u00e9 para voc\u00ea que deseja um ajuste mais fino do conte\u00fado da guia ou deseja escrever o c\u00f3digo voc\u00ea mesmo sem pagar por outro plugin.<\/p>\n<p>Usaremos o plugin <a href=\"https:\/\/www.advancedcustomfields.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Advanced Custom Fields<\/a> (ACF) para simplificar o processo. Mas voc\u00ea deve ser capaz de substituir facilmente a parte do ACF por seu pr\u00f3prio c\u00f3digo personalizado se n\u00e3o quiser usar o plug-in. ACF vem em uma <a href=\"https:\/\/wordpress.org\/plugins\/advanced-custom-fields\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">vers\u00e3o gratuita<\/a> e uma <a href=\"https:\/\/www.advancedcustomfields.com\/pro\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">vers\u00e3o Pro<\/a>. No ACF Pro existe um tipo de campo bacana: o repetidor, que \u00e9 perfeito para esse tipo de uso. Se voc\u00ea, no entanto, n\u00e3o possui ou deseja adquirir uma licen\u00e7a Pro, n\u00e3o se preocupe. O tutorial de c\u00f3digo abaixo mostrar\u00e1 como adicionar campos usando a vers\u00e3o gratuita \u2013 e usando o repetidor na vers\u00e3o Pro.<\/p>\n<p>Se voc\u00ea ainda n\u00e3o est\u00e1 familiarizado com o ACF, o que o ACF nos ajuda \u00e9 a configura\u00e7\u00e3o f\u00e1cil de meta campos de postagem \u2013 de todos os tipos. Voc\u00ea pode adicionar facilmente um editor, um seletor de arquivos, um seletor de data ou cor, um seletor de postagem ou categoria com suporte para v\u00e1rias op\u00e7\u00f5es e reordena\u00e7\u00e3o e muito mais. Podemos conseguir o mesmo sem o ACF, mas precisar\u00edamos codificar a exibi\u00e7\u00e3o e salvar o conte\u00fado das metaboxes.<\/p>\n<h2>O que vamos fazer<\/h2>\n<p>Para simplificar, queremos permitir a adi\u00e7\u00e3o de guias personalizadas \u00e0 visualiza\u00e7\u00e3o do produto. Cada guia suporta um t\u00edtulo que \u00e9 exibido como r\u00f3tulo de guia e o conte\u00fado que \u00e9 exibido ao clicar na guia. As abas personalizadas realmente dependem do tipo de projeto ou necessidades que voc\u00ea tem; talvez voc\u00ea precise de guias para especifica\u00e7\u00f5es t\u00e9cnicas, uma guia com arquivos (por exemplo, manuais do usu\u00e1rio e outros), informa\u00e7\u00f5es adicionais ou uma consulta personalizada que exiba produtos relacionados.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-152607-61e4e196664e9.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-152607-61e4e196664e9.png\" alt=\"Crie abas personalizadas de produtos WooCommerce com campos personalizados avan\u00e7ados\" ><\/a><\/p>\n<p>Neste tutorial vamos simplificar adicionando um editor WYSIWYG para o conte\u00fado da guia. Como mencionado acima, \u00e9 f\u00e1cil implementar outros tipos de campo (por exemplo, arquivos ou uma consulta de postagem), \u00e9 apenas uma diferen\u00e7a no c\u00f3digo que voc\u00ea escreve para exibir o conte\u00fado da guia &#8211; que n\u00e3o est\u00e1 relacionado a este tutorial.<\/p>\n<p>Se voc\u00ea possui o ACF Pro e deseja usar o repetidor para adicionar facilmente v\u00e1rias guias; pule a pr\u00f3xima se\u00e7\u00e3o. Se voc\u00ea tiver apenas a vers\u00e3o gratuita do ACF, continue. A desvantagem de n\u00e3o ter o campo repetidor \u00e9 que voc\u00ea precisa definir um n\u00famero fixo de abas. Portanto, o autor n\u00e3o pode fazer um n\u00famero ilimitado de abas como pode fazer com o repetidor. Mas esta solu\u00e7\u00e3o gratuita funcionar\u00e1 bem em lojas virtuais onde voc\u00ea deseja apenas guias personalizadas espec\u00edficas (n\u00famero de).<\/p>\n<h2>Tutorial para a vers\u00e3o gratuita do ACF<\/h2>\n<h3>Adicionando os campos ACF<\/h3>\n<p>Adicionar uma nova metabox com campos \u00e9 muito f\u00e1cil com o ACF. Voc\u00ea tem duas op\u00e7\u00f5es; use a interface do usu\u00e1rio do ACF para configurar tudo ou adicione os campos por c\u00f3digo. Normalmente, configurar os campos no admin \u00e9 o caminho a seguir. Mas se voc\u00ea precisar garantir que os campos existam em v\u00e1rios sites do WordPress (por exemplo, desenvolvimento localhost, servidor de teste e servidor ao vivo), voc\u00ea pode se beneficiar adicionando os campos por c\u00f3digo em seu tema ou plugin.<\/p>\n<p>Voc\u00ea precisa configurar o seguinte:<\/p>\n<ul>\n<li>Um grupo que \u00e9 exibido quando o tipo de postagem \u00e9 igual a produtos WooCommerce<\/li>\n<li>Uma entrada de texto para o t\u00edtulo da guia<\/li>\n<li>Qualquer campo(s) que voc\u00ea deseja para o conte\u00fado da guia. Como exemplo, adicionaremos um editor WYSIWYG.<\/li>\n<li>(Opcional) T\u00edtulos de guias adicionais e conte\u00fado de guias para quantas guias quisermos oferecer.<\/li>\n<\/ul>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-152607-61e4e197a93a6.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-152607-61e4e197a93a6.png\" alt=\"Crie abas personalizadas de produtos WooCommerce com campos personalizados avan\u00e7ados\" ><\/a><\/p>\n<p>Lembre-se de lembrar os nomes dos campos, pois voc\u00ea precisar\u00e1 consult\u00e1-los mais tarde. Defini o t\u00edtulo da guia como <code>tab_title<\/code>e o campo WYSIWYG como <code>tab_contents<\/code>.<\/p>\n<p>Se voc\u00ea preferir adicionar os campos por c\u00f3digo, aqui est\u00e1 um exemplo. Adicione isso no arquivo do seu tema <code>functions.php<\/code>ou plugin:<\/p>\n<pre><code>if (class_exists('acf')) {\n    add_action('acf\/init', function() {\n        $fields = [\n            [\n                'key' =&gt; 'field_tab_title',\n                'label' =&gt; __('Custom tab title', 'txtdomain'),\n                'name' =&gt; 'tab_title',\n                'type' =&gt; 'text',\n            ],\n            [\n                'key' =&gt; 'field_tab_contents',\n                'label' =&gt; __('Custom tab content', 'txtdomain'),\n                'name' =&gt; 'tab_contents',\n                'type' =&gt; 'wysiwyg',\n                'tabs' =&gt; 'all',\n                'toolbar' =&gt; 'full',\n                'media_upload' =&gt; 1,\n                'delay' =&gt; 0,\n            ],\n        ];\n\u00a0\n        acf_add_local_field_group([\n            'key' =&gt; 'group_custom_woocommerce_tabs',\n            'title' =&gt; __('Custom Tabs', 'txtdomain'),\n            'fields' =&gt; $fields,\n            'label_placement' =&gt; 'top',\n            'menu_order' =&gt; 0,\n            'style' =&gt; 'default',\n            'position' =&gt; 'normal',\n            'location' =&gt; [\n                [\n                    [\n                        'param' =&gt; 'post_type',\n                        'operator' =&gt; '==',\n                        'value' =&gt; 'product'\n                    ]\n                ]\n            ],\n        ]);\n    });\n}<\/code><\/pre>\n<p>Se voc\u00ea quiser mais do que apenas uma guia, basta adicionar outro conjunto de t\u00edtulo e conte\u00fado da guia ap\u00f3s <code>line #19<\/code>. Apenas lembre-se de manter <code>name<\/code>\u00fanico.<\/p>\n<p>Quando editamos um produto, devemos ver esta metabox aparecer:<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-152607-61e4e198aac0f.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-152607-61e4e198aac0f.png\" alt=\"Crie abas personalizadas de produtos WooCommerce com campos personalizados avan\u00e7ados\" ><\/a><\/p>\n<h3>Sa\u00edda de suas guias personalizadas<\/h3>\n<p>WooCommerce nos permite filtrar <code>woocommerce_product_tabs<\/code>para manipular guias. Como argumento para este filtro, voc\u00ea obt\u00e9m um array para todas as guias. A matriz consiste em matrizes para cada guia com chaves exclusivas. Mas a matriz para cada guia n\u00e3o cont\u00e9m a sa\u00edda real do conte\u00fado da guia. Em vez disso, ele espera um retorno de chamada \u2013 um nome de uma fun\u00e7\u00e3o que o WooCommerce executar\u00e1 para gerar o conte\u00fado da guia.<\/p>\n<p>Uma vez dentro da fun\u00e7\u00e3o, voc\u00ea pode usar <code>global $post<\/code>para obter acesso ao objeto de postagem atual, ou se quiser o objeto do produto que o WooCommerce gera, basta fazer <code>global $product<\/code>. Precisamos do ID do post para buscar o valor de nossos campos personalizados com a fun\u00e7\u00e3o do ACF <code>[get_field](https:\/\/www.advancedcustomfields.com\/resources\/get_field\/)()<\/code>. No exemplo de c\u00f3digo abaixo estamos apenas buscando o t\u00edtulo da aba e verificamos se esta est\u00e1 vazia ou n\u00e3o. Se n\u00e3o estiver, ele adiciona uma nova guia \u00e0 matriz. Faz sentido n\u00e3o adicionar guias onde o t\u00edtulo da guia est\u00e1 vazio.<\/p>\n<pre><code>if (class_exists('acf') &amp;&amp; class_exists('WooCommerce')) {\n    add_filter('woocommerce_product_tabs', function($tabs) {\n        global $post, $product;  \/\/ Access to the current product or post\n        $custom_tab_title = get_field('tab_title', $post-&gt;ID);\n\u00a0\n        if (!empty($custom_tab_title)) {\n            $tabs['awp-'. sanitize_title($custom_tab_title)] = [\n                'title' =&gt; $custom_tab_title,\n                'callback' =&gt; 'awp_custom_woocommerce_tabs',\n                'priority' =&gt; 10\n            ];\n        }\n        return $tabs;\n    });\n\u00a0\n    function awp_custom_woocommerce_tabs($key, $tab) {\n        global $post;\n\u00a0\n        ?&gt;&lt;h2&gt;&lt;?php echo $tab['title']; ?&gt;&lt;\/h2&gt;&lt;?php\n\u00a0\n        $custom_tab_contents = get_field('tab_contents', $post-&gt;ID);\n        echo $custom_tab_contents;\n    }\n}<\/code><\/pre>\n<p>Observe que voc\u00ea pode usar &#8216; <code>priority<\/code>&#8216; para controlar a posi\u00e7\u00e3o da guia. Por exemplo, configur\u00e1-lo para 1 far\u00e1 com que sua guia apare\u00e7a primeiro, antes de todas as guias do WooCommerce. Defina um nome de fun\u00e7\u00e3o para o <code>callback<\/code>elemento &#8216; &#8216;. Em linha <code>#17<\/code>, definimos a fun\u00e7\u00e3o que o WooCommerce executar\u00e1 para a sa\u00edda do conte\u00fado da guia.<\/p>\n<p>Essas fun\u00e7\u00f5es de retorno de chamada de guia obter\u00e3o dois par\u00e2metros; a chave e o elemento de matriz de todos os valores da guia atual. Dentro de nossa fun\u00e7\u00e3o de retorno de chamada, geramos o t\u00edtulo da guia novamente, referindo-nos ao <code>$tab<\/code>array fornecido. O WooCommerce ecoa seus t\u00edtulos de guia dentro de um <code>h2<\/code>, ent\u00e3o fazemos o mesmo. E ent\u00e3o usamos <code>get_field()<\/code>para obter o valor do conte\u00fado da guia e simplesmente ecoar o valor. Ajuste a linha <code>#23<\/code>para caber em qualquer tipo de campo que voc\u00ea adicionou (por exemplo, seletor de objeto de postagem, imagens ou qualquer outra coisa).<\/p>\n<p>Observe que eu envolvi tudo dentro de um if-check que verifica se o WooCommerce e o ACF est\u00e3o ou n\u00e3o ativados. Essa \u00e9 uma boa pr\u00e1tica para evitar que seu site seja interrompido.<\/p>\n<p>E <strong>\u00e9 isso<\/strong>! Agora voc\u00ea criou com sucesso o c\u00f3digo para adicionar guias personalizadas do WooCommerce!<\/p>\n<p>Se voc\u00ea quiser fazer isso com o campo repetidor do ACF Pro para suportar um n\u00famero ilimitado de guias, continue lendo.<\/p>\n<h2>Tutorial para ACF Pro e repetidor<\/h2>\n<h3>Adicionando os campos ACF<\/h3>\n<p>Adicione seu grupo usando a interface do usu\u00e1rio de administra\u00e7\u00e3o do ACF ou adicionando-os por c\u00f3digo em seu tema ou arquivos de plug-in. Precisamos configurar o seguinte:<\/p>\n<ul>\n<li>Um grupo que \u00e9 exibido quando o tipo de postagem \u00e9 igual ao produto WooCommerce<\/li>\n<li>Um repetidor com os seguintes subcampos:\n<ul>\n<li>Uma entrada de texto para o t\u00edtulo da guia<\/li>\n<li>Qualquer campo(s) que voc\u00ea deseja para o conte\u00fado da guia.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>\u00c9 assim que voc\u00ea o configuraria usando o administrador do ACF:<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-152607-61e4e19a1ed6d.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-152607-61e4e19a1ed6d.png\" alt=\"Crie abas personalizadas de produtos WooCommerce com campos personalizados avan\u00e7ados\" ><\/a><\/p>\n<p>Ou voc\u00ea pode adicionar o grupo por c\u00f3digo assim:<\/p>\n<pre><code>if (class_exists('acf')) {\n    add_action('acf\/init', function() {\n        $fields = [\n            [\n                'key' =&gt; 'field_custom_tabs_repeater',\n                'label' =&gt; __('Custom tabs', 'txtdomain'),\n                'name' =&gt; 'custom_tabs_repeater',\n                'type' =&gt; 'repeater',\n                'layout' =&gt; 'row',\n                'button_label' =&gt; __('Add new tab', 'txtdomain'),\n                'sub_fields' =&gt; [\n                    [\n                        'key' =&gt; 'field_tab_title',\n                        'label' =&gt; __('Tab title', 'txtdomain'),\n                        'name' =&gt; 'tab_title',\n                        'type' =&gt; 'text',\n                    ],\n                    [\n                        'key' =&gt; 'field_tab_contents',\n                        'label' =&gt; __('Tab content', 'txtdomain'),\n                        'name' =&gt; 'tab_contents',\n                        'type' =&gt; 'wysiwyg',\n                        'tabs' =&gt; 'all',\n                        'toolbar' =&gt; 'full',\n                        'media_upload' =&gt; 1,\n                        'delay' =&gt; 0,\n                    ],\n                ],\n            ],\n        ];\n\u00a0\n        acf_add_local_field_group([\n            'key' =&gt; 'group_custom_woocommerce_tabs',\n            'title' =&gt; __('Custom Tabs', 'txtdomain'),\n            'fields' =&gt; $fields,\n            'label_placement' =&gt; 'top',\n            'menu_order' =&gt; 0,\n            'style' =&gt; 'default',\n            'position' =&gt; 'normal',\n            'location' =&gt; [\n                [\n                    [\n                        'param' =&gt; 'post_type',\n                        'operator' =&gt; '==',\n                        'value' =&gt; 'product'\n                    ]\n                ]\n            ],\n        ]);\n    });\n}<\/code><\/pre>\n<p>De qualquer forma, voc\u00ea deve acabar com esta metabox ao editar produtos:<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-152607-61e4e19e02c1d.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-152607-61e4e19e02c1d.png\" alt=\"Crie abas personalizadas de produtos WooCommerce com campos personalizados avan\u00e7ados\" ><\/a><\/p>\n<h3>Sa\u00edda de suas guias personalizadas<\/h3>\n<p>A sa\u00edda de suas guias personalizadas \u00e9 muito semelhante ao que fizemos acima para a vers\u00e3o gratuita. Filtramos <code>woocommerce_product_tabs<\/code>, mas aqui fazemos um loop por cada item repetido do repetidor. Precisamos de uma maneira de identificar cada elemento no repetidor com chaves, ent\u00e3o n\u00f3s mesmos geramos uma chave usando a posi\u00e7\u00e3o do loop e uma vers\u00e3o slug do t\u00edtulo da guia. Na fun\u00e7\u00e3o de retorno de chamada, extra\u00edmos a posi\u00e7\u00e3o do loop da chave e usamos isso para fazer refer\u00eancia ao array do nosso repetidor.<\/p>\n<pre><code>if (class_exists('acf') &amp;&amp; class_exists('WooCommerce')) {\n    add_filter('woocommerce_product_tabs', function($tabs) {\n        global $post, $product;  \/\/ Access to the current product or post\n        $custom_tabs_repeater = get_field('custom_tabs_repeater', $post-&gt;ID);\n\u00a0\n        if (!empty($custom_tabs_repeater)) {\n            $counter = 0;\n            $start_at_priority = 10;\n            foreach ($custom_tabs_repeater as $custom_tab) {\n                $tab_id = $counter. '_'. sanitize_title($custom_tab['tab_title']);\n                $tabs[$tab_id] = [\n                    'title' =&gt; $custom_tab['tab_title'],\n                    'callback' =&gt; 'awp_custom_woocommerce_tabs',\n                    'priority' =&gt; $start_at_priority++\n                ];\n                $counter++;\n            }\n        }\n        return $tabs;\n    });\n\u00a0\n    function awp_custom_woocommerce_tabs($key, $tab) {\n        global $post;\n\u00a0\n        ?&gt;&lt;h2&gt;&lt;?php echo $tab['title']; ?&gt;&lt;\/h2&gt;&lt;?php\n\u00a0\n        $custom_tabs_repeater = get_field('custom_tabs_repeater', $post-&gt;ID);\n        $tab_id = explode('_', $key);\n        $tab_id = $tab_id[0];\n\u00a0\n        echo $custom_tabs_repeater[$tab_id]['tab_contents'];\n    }\n}<\/code><\/pre>\n<p>Dentro da nossa fun\u00e7\u00e3o de filtro buscamos o valor do repetidor e verificamos se n\u00e3o est\u00e1 vazio. Em seguida, definimos uma vari\u00e1vel contadora, come\u00e7ando em 0 (os arrays sempre come\u00e7am na posi\u00e7\u00e3o 0), que incrementamos com 1 para cada elemento dentro do loop (na linha <code>#18<\/code>). No loop para cada item do repetidor, atribu\u00edmos todos eles \u00e0 mesma fun\u00e7\u00e3o de retorno de chamada. Usamos a fun\u00e7\u00e3o do WordPress <code>[sanitize_title](https:\/\/developer.wordpress.org\/reference\/functions\/sanitize_title\/)()<\/code>para converter o t\u00edtulo da guia em uma vers\u00e3o slug dele e o anexa \u00e0 chave.<\/p>\n<p>Em nossa fun\u00e7\u00e3o de retorno de chamada na linha <code>#31 - 32<\/code>, fazemos algumas manipula\u00e7\u00f5es de string simples para extrair o valor do contador (que come\u00e7a em 0 e incrementa em 1 para cada item). Em seguida, simplesmente usamos isso como o \u00edndice para o array do repetidor para buscar o campo de conte\u00fado da guia correto.<\/p>\n<p>E <strong>\u00e9 isso<\/strong>! Agora voc\u00ea implementou um n\u00famero ilimitado de guias personalizadas no WooCommerce!<\/p>\n<p>Lembre-se que voc\u00ea pode substituir WYSIWYG por qualquer tipo de campo. Voc\u00ea s\u00f3 precisa alterar a forma de sa\u00edda do campo na linha <code>#23<\/code>.<\/p>\n<h2>Conclus\u00e3o<\/h2>\n<p>Escrever seu pr\u00f3prio c\u00f3digo para adicionar guias personalizadas do WooCommerce \u00e9 muito f\u00e1cil quando voc\u00ea entende o conceito b\u00e1sico de como o WooCommerce faz isso. Nem mesmo requer muito c\u00f3digo. Esta \u00e9 uma solu\u00e7\u00e3o perfeita para voc\u00ea que n\u00e3o quer ou n\u00e3o pode investir em licen\u00e7as de extens\u00e3o ou apenas precisa de uma solu\u00e7\u00e3o simples para sua loja virtual.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fonte de grava\u00e7\u00e3o:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/awhitepixel.com\" class=\"external external_icon\">awhitepixel.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Um tutorial sobre como voc\u00ea pode adicionar guias personalizadas do WooCommerce aos produtos. Veja como \u00e9 f\u00e1cil fazer isso com o plugin Advanced Custom Fields e um pouco de c\u00f3digo.<\/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":[722,722,1110,816,816,846,846,857,857,867,867],"tags":[1170],"class_list":["post-233669","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-desenvolvedor","category-n-a","category-plug-ins","category-tutoriais","category-woocommerce-8","category-wordpress-8","tag-affiai-pt-pt"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/posts\/233669","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/comments?post=233669"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/posts\/233669\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/media\/224911"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/media?parent=233669"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/categories?post=233669"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/tags?post=233669"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}