{"id":233605,"date":"2023-02-17T09:29:00","date_gmt":"2023-02-17T06:29:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=233605"},"modified":"2022-11-11T00:36:37","modified_gmt":"2022-11-10T21:36:37","slug":"como-adicionar-programaticamente-um-desconto-personalizado-ao-woocommerce-checkout","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/pt-pt\/como-adicionar-programaticamente-um-desconto-personalizado-ao-woocommerce-checkout\/","title":{"rendered":"Como adicionar programaticamente um desconto personalizado ao WooCommerce Checkout"},"content":{"rendered":"\n<p>Neste post, veremos como adicionamos descontos de forma program\u00e1tica e autom\u00e1tica. Para fazer isso, utilizamos a funcionalidade de cupom do WooCommerce, mas a tornamos autom\u00e1tica e ocultamos o fato de que \u00e9 um cupom para os clientes. Tentei manter o c\u00f3digo o mais geral poss\u00edvel, pois as condi\u00e7\u00f5es de aplica\u00e7\u00e3o de descontos podem variar muito para quem l\u00ea isso.<\/p>\n<h2>Por que os cupons s\u00e3o a maneira de fazer isso<\/h2>\n<p>Nas vers\u00f5es mais antigas do WooCommerce, t\u00ednhamos algumas op\u00e7\u00f5es (&quot;hackish&quot;) para adicionar descontos com c\u00f3digo, por exemplo, fornecer um n\u00famero negativo <code>add_fee()<\/code>ou trabalhar com <code>get_discounted_price()<\/code>. Infelizmente, esses m\u00e9todos n\u00e3o funcionam mais ou s\u00e3o considerados legados e ser\u00e3o removidos em vers\u00f5es posteriores. A maneira estruturalmente boa de adicionar descontos \u00e9 usar a funcionalidade de cupom integrada no WooCommerce.<\/p>\n<p>No entanto, um cupom geralmente n\u00e3o pode ser aplicado automaticamente a um carrinho. Ele exige que o cliente digite manualmente um c\u00f3digo de cupom que ele ou ela deve ter recebido. Em algumas lojas online voc\u00ea s\u00f3 quer um desconto aplicado automaticamente quando uma determinada condi\u00e7\u00e3o for atendida sem que o cliente tenha que fazer nada. Isso \u00e9 o que vamos corrigir usando c\u00f3digo.<\/p>\n<h2>Descontos personalizados com cupons<\/h2>\n<p>Voc\u00ea precisar\u00e1 criar um cupom com um c\u00f3digo e configur\u00e1-lo com os par\u00e2metros que desejar. Voc\u00ea poder\u00e1 aplic\u00e1-lo, remov\u00ea-lo e alterar diferentes sa\u00eddas onde quer que o cupom esteja vis\u00edvel para o cliente. Opcionalmente, se voc\u00ea n\u00e3o quiser cupons dispon\u00edveis para clientes em sua loja virtual, veremos alguns truques simples para ocultar as op\u00e7\u00f5es de inser\u00e7\u00e3o manual de c\u00f3digos de cupom.<\/p>\n<p>No exemplo de c\u00f3digo abaixo, estou agrupando todo o c\u00f3digo relacionado em uma classe PHP. Isso ajuda para um c\u00f3digo mais limpo, mas \u00e9 especialmente \u00fatil porque queremos fazer refer\u00eancia ao c\u00f3digo do cupom v\u00e1rias vezes. Defini-la como uma vari\u00e1vel de classe \u00e9 melhor do que repeti-la em v\u00e1rias fun\u00e7\u00f5es.<\/p>\n<h3>Crie seu desconto como um cupom<\/h3>\n<p>O primeiro passo \u00e9 criar o cupom que ser\u00e1 o &#8220;placeholder&quot; do seu desconto. O mais f\u00e1cil \u00e9 simplesmente criar um no administrador do WooCommerce (WooCommerce &gt; Coupons &gt; Add Coupon).<\/p>\n<p>Se voc\u00ea quiser criar o cupom programaticamente, um cupom \u00e9 na verdade uma postagem com a qual voc\u00ea pode criar <code>wp_insert_post()<\/code>&#8211; mas voc\u00ea precisa ter o cuidado de criar sua postagem de cupom apenas uma vez. WooCommerce tem um pequeno <a href=\"https:\/\/docs.woocommerce.com\/document\/create-a-coupon-programatically\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">guia sobre como criar um cupom programaticamente<\/a>.<\/p>\n<p>Forne\u00e7a um slug exclusivo como seu c\u00f3digo de cupom e, no m\u00ednimo, configure o valor do desconto (uma porcentagem ou taxa fixa). Quanto ao exemplo de c\u00f3digo abaixo, criei um c\u00f3digo de cupom &#8216; <code>example<\/code>&#8216; (recomendo usar um nome mais criativo e adequado para o seu).<\/p>\n<h3>Criando a classe PHP que conter\u00e1 todo o nosso c\u00f3digo<\/h3>\n<p>Vamos finalmente \u00e0 codifica\u00e7\u00e3o! Voc\u00ea pode definir esta classe diretamente dentro do seu tema <code>functions.php<\/code>, c\u00f3digo de plugin ou um arquivo separado inclu\u00eddo.<\/p>\n<pre><code>class AWPCustomDiscount {\n    private $coupon_code = 'example';\n\u00a0\n    public function __construct() {\n\u00a0\n    }\n}\nnew AWPCustomDiscount();<\/code><\/pre>\n<p>Nomeie sua classe como quiser e substitua a vari\u00e1vel <code>$coupon_code<\/code>de classe pelo nome que voc\u00ea deu ao seu cupom. N\u00e3o se esque\u00e7a de inicializar a classe depois no final (<code>new AWPCustomDiscount()<\/code>).<\/p>\n<p>Se voc\u00ea programou orienta\u00e7\u00e3o a objetos antes, isso deve ser familiar para voc\u00ea. Se n\u00e3o, n\u00e3o se preocupe, isso deve ser simples de seguir. Adicionaremos algumas fun\u00e7\u00f5es aqui e nos referiremos ao c\u00f3digo do cupom com <code>$this-&gt;coupon_code<\/code>. Vamos come\u00e7ar com o c\u00f3digo respons\u00e1vel por realmente adicionar o cupom quando as condi\u00e7\u00f5es forem atendidas.<\/p>\n<h3>Aplicando cupom programaticamente<\/h3>\n<p>Por experi\u00eancia, aprendi que ligar o c\u00f3digo para aplicar e remover cupons funciona melhor e de forma mais consistente usando os dois ganchos a seguir; um para o carrinho (<code>woocommerce_before_cart<\/code>) e outro para o checkout (<code>woocommerce_before_checkout_form<\/code>).<\/p>\n<p>Dentro da fun\u00e7\u00e3o, tudo o que precisamos fazer \u00e9 verificar as condi\u00e7\u00f5es que queremos. WooCommerce oferece fun\u00e7\u00f5es para obter o objeto do carrinho <code>with WC()-&gt;cart<\/code>que podemos usar para obter todas as informa\u00e7\u00f5es que precisamos sobre o carrinho, como seus itens e totais. Como exemplo, o c\u00f3digo abaixo aplicar\u00e1 um desconto se o total do carrinho (excluindo quaisquer descontos) estiver acima de um determinado valor.<\/p>\n<p>Devemos tamb\u00e9m garantir que se as condi\u00e7\u00f5es n\u00e3o forem atendidas, devemos remover o desconto se tiver sido adicionado anteriormente. No nosso exemplo, imagine que o cliente ultrapassou o valor m\u00e1ximo, mas depois foi ao carrinho, retirou alguns itens e assim voltou a ficar abaixo do valor exigido. Como os cupons n\u00e3o s\u00e3o aplicados automaticamente, todos os cupons aplicados tamb\u00e9m precisam ser removidos programaticamente.<\/p>\n<h4>Usando<code>apply_coupon<\/code><\/h4>\n<p>Os cupons s\u00e3o adicionados ao objeto do carrinho <code>apply_coupon()<\/code>fornecendo o c\u00f3digo do cupom como par\u00e2metro e s\u00e3o removidos do objeto do carrinho <code>remove_coupon()<\/code>com o c\u00f3digo do cupom como par\u00e2metro. Simples o suficiente. Tamb\u00e9m podemos usar a fun\u00e7\u00e3o t\u00e3o apropriadamente nomeada <code>get_applied_coupons()<\/code>no objeto carrinho para verificar se nosso cupom j\u00e1 foi aplicado.<\/p>\n<pre><code>    ...\n    public function __construct() {\n        add_action('woocommerce_before_cart', [$this, 'addDiscount']);\n        add_action('woocommerce_before_checkout_form', [$this, 'addDiscount']);\n    }\n\u00a0\n    function addDiscount() {\n        if (is_admin() &amp;&amp; !defined('DOING_AJAX')) {\n            return;\n        }\n        if (WC()-&gt;cart-&gt;get_subtotal() &gt; 500) {\n            \/\/ add discount, if not added already\n            if (!in_array($this-&gt;coupon_code, WC()-&gt;cart-&gt;get_applied_coupons())) {\n                WC()-&gt;cart-&gt;apply_coupon($this-&gt;coupon_code);\n            }\n        } else {\n            \/\/ remove discount if it was previously added\n            WC()-&gt;cart-&gt;remove_coupon($this-&gt;coupon_code);\n        }\n    }\n    ...<\/code><\/pre>\n<p>Se voc\u00ea n\u00e3o estiver familiarizado com o uso de PHP orientado a objetos no WordPress; aqui est\u00e1 um breve resumo de como o acima funciona: A <code>__construct()<\/code>fun\u00e7\u00e3o ser\u00e1 executada sempre que a classe for inicializada, o que fazemos imediatamente ap\u00f3s a classe. Dentro <code>__construct()<\/code>, voc\u00ea normalmente adicionar\u00e1 todos os ganchos como faria normalmente, por exemplo, dentro de <code>functions.php<\/code>. Para que o WordPress encontre nossas fun\u00e7\u00f5es dentro de nossa classe, precisamos dizer ao gancho para se referir a uma fun\u00e7\u00e3o definida em uma matriz que consiste em <code>$this<\/code>(o objeto de classe) e o nome da fun\u00e7\u00e3o.<\/p>\n<p>Dentro da fun\u00e7\u00e3o <code>addDiscount()<\/code>programamos em nossas condi\u00e7\u00f5es. No exemplo acima eu busco o total do carrinho usando <code>WC()-&gt;cart-&gt;get_subtotal()<\/code>e comparo com as minhas condi\u00e7\u00f5es \u2013 sendo acima de 500.<\/p>\n<p>Observa\u00e7\u00e3o: se voc\u00ea precisar buscar e comparar os totais do carrinho, saiba que a maioria dos totais inclui cupons. Por exemplo, o mais familiar <code>WC()-&gt;cart-&gt;get_cart_contents_total()<\/code>devolver\u00e1 o total antes do envio, mas inclui descontos; o que significa que, se seu desconto j\u00e1 foi aplicado anteriormente, esse total estar\u00e1 errado para compara\u00e7\u00e3o.<\/p>\n<p>Voc\u00ea pode chamar <code>apply_coupon()<\/code>sem verificar se o cupom j\u00e1 foi aplicado (a <code>if<\/code>verifica\u00e7\u00e3o na linha #14), porque a pr\u00f3pria fun\u00e7\u00e3o <code>apply_coupon()<\/code>se certificar\u00e1 de n\u00e3o adicion\u00e1-lo novamente se tiver sido aplicado antes. No entanto, esta <code>if<\/code>verifica\u00e7\u00e3o evita que o cliente receba uma mensagem de erro dizendo &#8220;O cupom j\u00e1 foi aplicado&#8221; toda vez que o carrinho for atualizado.<\/p>\n<p>\u00c9 assim que seu desconto aparecer\u00e1 nos totais do carrinho no carrinho e na finaliza\u00e7\u00e3o da compra:<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-152866-61e4fcd750a7d.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-152866-61e4fcd750a7d.png\" alt=\"Como adicionar programaticamente um desconto personalizado ao WooCommerce Checkout\" ><\/a><\/p>\n<h4>Suas condi\u00e7\u00f5es de desconto<\/h4>\n<p>As condi\u00e7\u00f5es do seu cupom dependem inteiramente de voc\u00ea e de suas necessidades. Configurei alguns exemplos de condi\u00e7\u00f5es para <a href=\"https:\/\/awhitepixel.com\/blog\/guide-on-how-to-add-custom-fees-to-woocommerce-checkout\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">adicionar uma taxa personalizada em uma postagem anterior<\/a> &#8211; por exemplo, dependendo do local de envio ou de quais produtos est\u00e3o no carrinho. Voc\u00ea tamb\u00e9m pode comparar a data de hoje se quiser dar um desconto especial de Natal ou Halloween, ou dar um desconto com base nas condi\u00e7\u00f5es do cliente conectado.<\/p>\n<p>Se preferir aplicar o cupom dependendo das configura\u00e7\u00f5es definidas no pr\u00f3prio cupom \u2013 por exemplo, excluir ou incluir determinados IDs de produtos, voc\u00ea tamb\u00e9m pode faz\u00ea-lo. Voc\u00ea pode instanciar um objeto do cupom a partir do c\u00f3digo do cupom, assim:<\/p>\n<pre><code>$coupon = new WC_Coupon($this-&gt;coupon_code);<\/code><\/pre>\n<p>Com esse objeto de cupom, voc\u00ea tem acesso a todas as fun\u00e7\u00f5es para buscar quaisquer configura\u00e7\u00f5es definidas no cupom. Por exemplo, obter IDs de produtos que devem ser inclu\u00eddos no cupom:<\/p>\n<pre><code>$required_products = $coupon-&gt;get_product_ids();<\/code><\/pre>\n<p>Consulte a <a href=\"https:\/\/docs.woocommerce.com\/wc-apidocs\/class-WC_Coupon.html\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">documenta\u00e7\u00e3o da classe WC_Coupon<\/a> para ver como voc\u00ea pode obter o que precisa.<\/p>\n<h3>Corrigir o r\u00f3tulo vis\u00edvel do cupom<\/h3>\n<p>O cupom j\u00e1 deve ser adicionado e removido quando seu carrinho atender ou n\u00e3o atender \u00e0s suas condi\u00e7\u00f5es definidas em <code>addDiscount()<\/code>. No entanto, na tabela de totais, tanto no carrinho quanto no checkout, o desconto \u00e9 exibido como &#8220;Cupom: exemplo&#8221; (ou qualquer que seja o c\u00f3digo do seu cupom). Isso n\u00e3o \u00e9 bom! Felizmente, \u00e9 f\u00e1cil alterar esse r\u00f3tulo usando o filtro <code>woocommerce_cart_totals_coupon_label<\/code>. Vamos adicionar o filtro ao nosso <code>__construct()<\/code>e definir uma fun\u00e7\u00e3o:<\/p>\n<pre><code>    ...\n    public function __construct() {\n        add_action('woocommerce_before_cart', [$this, 'addDiscount']);\n        add_action('woocommerce_before_checkout_form', [$this, 'addDiscount']);\n        add_filter('woocommerce_cart_totals_coupon_label', [$this, 'discountLabel'], 10, 2);\n    }\n\u00a0\n    function discountLabel($label, $coupon) {\n        if ($coupon-&gt;code == $this-&gt;coupon_code) {\n            return __('Custom discount', 'txtdomain');\n        }\n        return $label;\n    }\n    ...<\/code><\/pre>\n<p>Com o filtro temos acesso ao objeto cupom como segundo par\u00e2metro. Com o objeto de cupom, podemos verificar sua propriedade, <code>code<\/code>, se corresponde ou n\u00e3o ao nosso c\u00f3digo de cupom personalizado. Se sim, devolvemos o r\u00f3tulo que quisermos. Ajuste a sa\u00edda da etiqueta para o que voc\u00ea quiser. Caso contr\u00e1rio, devolvemos o r\u00f3tulo do cupom padr\u00e3o.<\/p>\n<h3>Remover a op\u00e7\u00e3o do usu\u00e1rio para remover o desconto<\/h3>\n<p>Outra coisa que voc\u00ea deve ter notado na exibi\u00e7\u00e3o do nosso desconto no carrinho e no checkout \u00e9 que ele recebeu um link &#8220;[Remover]&#8221; ap\u00f3s o valor. Este \u00e9 o comportamento padr\u00e3o dos cupons no WooCommerce, mas para o nosso caso n\u00e3o \u00e9 desej\u00e1vel. Tanto porque pode confundir os clientes quanto porque nosso c\u00f3digo o reaplicaria ap\u00f3s a remo\u00e7\u00e3o.<\/p>\n<p>WooCommerce fornece o filtro <code>woocommerce_cart_totals_coupon_html<\/code>para a sa\u00edda do valor. Felizmente, o WooCommerce fornece a sa\u00edda HTML apenas do valor em si como terceiro par\u00e2metro para esse filtro. Podemos simplesmente devolver isso em vez de garantir que nosso desconto seja apresentado corretamente com moeda e tudo mais.<\/p>\n<pre><code>    ...\n    public function __construct() {\n        add_action('woocommerce_before_cart', [$this, 'addDiscount']);\n        add_action('woocommerce_before_checkout_form', [$this, 'addDiscount']);\n        add_filter('woocommerce_cart_totals_coupon_label', [$this, 'discountLabel'], 10, 2);\n        add_filter('woocommerce_cart_totals_coupon_html', [$this, 'discountHtml'], 10, 3);\n    }\n\u00a0\n    function discountHtml($coupon_html, $coupon, $discount_amount_html) {\n        if ($coupon-&gt;code == $this-&gt;coupon_code) {\n            return $discount_amount_html;\n        }\n        return $coupon_html;\n    }\n    ...<\/code><\/pre>\n<h3>Opcional: ocultar a funcionalidade do cupom para os clientes<\/h3>\n<p>Os cupons devem ser ativados no WooCommerce para que nossa funcionalidade de desconto funcione, mas esteja ciente de que isso adicionar\u00e1 a op\u00e7\u00e3o para os clientes inserirem manualmente os c\u00f3digos de cupom no carrinho e no checkout. Se voc\u00ea n\u00e3o quiser mostrar que sua loja virtual tem a funcionalidade de cupom e, especialmente, n\u00e3o permitir que os clientes insiram c\u00f3digos de cupom manualmente, voc\u00ea tamb\u00e9m pode fazer isso.<\/p>\n<h4>Removendo do checkout<\/h4>\n<p>Remover a funcionalidade de cupom do checkout \u00e9 f\u00e1cil e pode ser feito dentro da nossa classe. Simplesmente removemos o gancho que renderiza a &#8220;caixa&#8221; do cupom, assim:<\/p>\n<pre><code>    ...\n    public function __construct() {\n        add_action('woocommerce_before_cart', [$this, 'addDiscount']);\n        add_action('woocommerce_before_checkout_form', [$this, 'addDiscount']);\n        add_filter('woocommerce_cart_totals_coupon_label', [$this, 'discountLabel'], 10, 2);\n        add_filter('woocommerce_cart_totals_coupon_html', [$this, 'discountHtml'], 10, 3);\n        remove_action('woocommerce_before_checkout_form', 'woocommerce_checkout_coupon_form', 10);\n    }\n    ...<\/code><\/pre>\n<h4>Removendo do carrinho<\/h4>\n<p>A remo\u00e7\u00e3o da funcionalidade do c\u00f3digo de cupom no carrinho infelizmente n\u00e3o \u00e9 t\u00e3o f\u00e1cil, pois isso \u00e9 codificado em um modelo. Voc\u00ea precisar\u00e1 substituir o modelo de carrinho do WooCommerce para remover a funcionalidade do cupom. Copie o arquivo <code>pluginswoocommercetemplatescartcart.php<\/code>em <code>your-themewoocommercecartcart.php<\/code>.<\/p>\n<p>Os arquivos de modelo do WooCommerce est\u00e3o mudando constantemente, portanto, fornecer um n\u00famero de linha exato n\u00e3o ajudaria. Mas voc\u00ea encontrar\u00e1 o c\u00f3digo que gera a entrada e o bot\u00e3o do cupom pr\u00f3ximo ao final do arquivo; parecendo mais ou menos assim:<\/p>\n<pre><code>...\n&lt;?php if (wc_coupons_enabled()) { ?&gt;\n    &lt;div class=\"coupon\"&gt;\n        &lt;label for=\"coupon_code\"&gt;&lt;?php esc_html_e( 'Coupon:', 'woocommerce' ); ?&gt;&lt;\/label&gt; &lt;input type=\"text\" name=\"coupon_code\" class=\"input-text\" id=\"coupon_code\" value=\"\" placeholder=\"&lt;?php esc_attr_e( 'Coupon code', 'woocommerce' ); ?&gt;\" \/&gt; &lt;button type=\"submit\" class=\"button\" name=\"apply_coupon\" value=\"&lt;?php esc_attr_e( 'Apply coupon', 'woocommerce' ); ?&gt;\"&gt;&lt;?php esc_attr_e( 'Apply coupon', 'woocommerce' ); ?&gt;&lt;\/button&gt;\n        &lt;?php do_action( 'woocommerce_cart_coupon' ); ?&gt;\n    &lt;\/div&gt;\n&lt;?php } ?&gt;\n...<\/code><\/pre>\n<p>O que voc\u00ea precisa fazer \u00e9 comentar a sa\u00edda relacionada ao cupom. Eu recomendo adicionar um coment\u00e1rio PHP <code>\/*<\/code>logo antes do <code>if<\/code>-check e fech\u00e1-lo <code>*\/<\/code>logo ap\u00f3s o colchete de fechamento. Igual a:<\/p>\n<pre><code>...\n&lt;?php \/* if (wc_coupons_enabled()) { ?&gt;\n    &lt;div class=\"coupon\"&gt;\n        &lt;label for=\"coupon_code\"&gt;&lt;?php esc_html_e( 'Coupon:', 'woocommerce' ); ?&gt;&lt;\/label&gt; &lt;input type=\"text\" name=\"coupon_code\" class=\"input-text\" id=\"coupon_code\" value=\"\" placeholder=\"&lt;?php esc_attr_e( 'Coupon code', 'woocommerce' ); ?&gt;\" \/&gt; &lt;button type=\"submit\" class=\"button\" name=\"apply_coupon\" value=\"&lt;?php esc_attr_e( 'Apply coupon', 'woocommerce' ); ?&gt;\"&gt;&lt;?php esc_attr_e( 'Apply coupon', 'woocommerce' ); ?&gt;&lt;\/button&gt;\n        &lt;?php do_action( 'woocommerce_cart_coupon' ); ?&gt;\n    &lt;\/div&gt;\n&lt;?php } *\/ ?&gt;\n...<\/code><\/pre>\n<p>Neste ponto, a funcionalidade de cupom da sua loja virtual deve estar praticamente oculta para os clientes! Mas seu desconto personalizado deve funcionar perfeitamente bem.<\/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>Neste tutorial, veremos como adicionar um desconto programaticamente no WooCommerce. Usamos cupons, mas o automatizamos e escondemos que \u00e9 um cupom.<\/p>\n","protected":false},"author":1,"featured_media":152867,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[898,898,920,1110,920,816,816,846,846,857,857,867,867],"tags":[1170],"class_list":{"0":"post-233605","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","6":"hentry","7":"category-codigo-2","9":"category-outro","10":"category-n-a","12":"category-plug-ins","14":"category-tutoriais","16":"category-woocommerce-8","18":"category-wordpress-8","20":"tag-affiai-pt-pt"},"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/posts\/233605","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=233605"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/posts\/233605\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/media\/152867"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/media?parent=233605"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/categories?post=233605"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/tags?post=233605"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}