{"id":233569,"date":"2023-02-17T10:03:00","date_gmt":"2023-02-17T07:03:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=233569"},"modified":"2022-11-11T00:23:41","modified_gmt":"2022-11-10T21:23:41","slug":"como-agregar-mediante-programacion-un-descuento-personalizado-a-woocommerce-checkout","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/es\/como-agregar-mediante-programacion-un-descuento-personalizado-a-woocommerce-checkout\/","title":{"rendered":"C\u00f3mo agregar mediante programaci\u00f3n un descuento personalizado a WooCommerce Checkout"},"content":{"rendered":"\n<p>En esta publicaci\u00f3n, veremos c\u00f3mo agregamos descuentos program\u00e1tica y autom\u00e1ticamente. Para hacer esto, utilizamos la funcionalidad de cupones de WooCommerce, pero la hacemos autom\u00e1tica y ocultamos el hecho de que es un cup\u00f3n para los clientes. He tratado de mantener el c\u00f3digo lo m\u00e1s general posible ya que las condiciones para aplicar los descuentos pueden variar mucho para cualquiera que lea esto.<\/p>\n<h2>Por qu\u00e9 los cupones son la forma de hacerlo<\/h2>\n<p>En versiones anteriores de WooCommerce, ten\u00edamos algunas opciones (&quot;hackish&quot;) para agregar descuentos con c\u00f3digo; por ejemplo, proporcionar un n\u00famero negativo <code>add_fee()<\/code>o trabajar con <code>get_discounted_price()<\/code>. Lamentablemente, estos m\u00e9todos ya no funcionan o se consideran heredados y se eliminar\u00e1n en versiones posteriores. La forma estructuralmente buena de agregar descuentos es usar la funcionalidad de cupones integrada en WooCommerce.<\/p>\n<p>Sin embargo, un cup\u00f3n generalmente no se puede aplicar autom\u00e1ticamente a un carrito. Requiere que el cliente ingrese manualmente un c\u00f3digo de cup\u00f3n que debe haber recibido. En algunas tiendas web, solo desea que se aplique un descuento autom\u00e1ticamente cuando se cumple una determinada condici\u00f3n sin que el cliente tenga que hacer nada. Eso es lo que arreglaremos usando c\u00f3digo.<\/p>\n<h2>Descuentos personalizados con cupones<\/h2>\n<p>Deber\u00e1 crear un cup\u00f3n con un c\u00f3digo y configurarlo con los par\u00e1metros que desee. Podr\u00e1 aplicarlo, eliminarlo y cambiar diferentes salidas donde el cup\u00f3n sea visible para el cliente. Opcionalmente, si en realidad no desea cupones disponibles para los clientes en su tienda web, veremos algunos trucos simples para ocultar las opciones para ingresar c\u00f3digos de cup\u00f3n manualmente.<\/p>\n<p>En el ejemplo de c\u00f3digo a continuaci\u00f3n, estoy agrupando todo el c\u00f3digo relacionado en una clase de PHP. Esto ayuda a tener un c\u00f3digo m\u00e1s limpio, pero es especialmente \u00fatil porque queremos referirnos al c\u00f3digo de cup\u00f3n varias veces. Definirlo como una variable de clase es mejor que repetirlo en m\u00faltiples funciones.<\/p>\n<h3>Crea tu descuento como cup\u00f3n<\/h3>\n<p>El primer paso es crear el cup\u00f3n que ser\u00e1 el &quot;marcador de posici\u00f3n&quot; de su descuento. Lo m\u00e1s f\u00e1cil es simplemente crear uno en el administrador de WooCommerce (WooCommerce&gt; Cupones&gt; Agregar cup\u00f3n).<\/p>\n<p>Si desea crear el cup\u00f3n program\u00e1ticamente, un cup\u00f3n es en realidad una publicaci\u00f3n con la que puede crear <code>wp_insert_post()<\/code>, pero debe tener cuidado de crear su publicaci\u00f3n de cup\u00f3n solo una vez. WooCommerce tiene una breve <a href=\"https:\/\/docs.woocommerce.com\/document\/create-a-coupon-programatically\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">gu\u00eda sobre c\u00f3mo crear un cup\u00f3n program\u00e1ticamente<\/a>.<\/p>\n<p>Proporcione un slug \u00fanico como su c\u00f3digo de cup\u00f3n y, como m\u00ednimo, configure el monto del descuento (ya sea un porcentaje o una tarifa fija). En cuanto al ejemplo de c\u00f3digo a continuaci\u00f3n, he creado un c\u00f3digo de cup\u00f3n &#8216; <code>example<\/code>&#8216; (sin embargo, recomiendo usar un nombre m\u00e1s creativo y apropiado para el suyo).<\/p>\n<h3>Creando la clase de PHP que contendr\u00e1 todo nuestro c\u00f3digo<\/h3>\n<p>\u00a1Vamos finalmente a la codificaci\u00f3n! Puede definir esta clase directamente dentro del <code>functions.php<\/code>c\u00f3digo del complemento de su tema o en un archivo separado incluido.<\/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>Asigne a su clase el nombre que desee y reemplace la variable de clase <code>$coupon_code<\/code>con el nombre que haya asignado a su cup\u00f3n. No olvide inicializar la clase despu\u00e9s del final (<code>new AWPCustomDiscount()<\/code>).<\/p>\n<p>Si antes ha programado orientado a objetos, esto le resultar\u00e1 familiar. Si no, no se preocupe, esto deber\u00eda ser f\u00e1cil de seguir. Agregaremos algunas funciones aqu\u00ed y nos referiremos al c\u00f3digo de cup\u00f3n con <code>$this-&gt;coupon_code<\/code>. Comencemos con el c\u00f3digo responsable de agregar el cup\u00f3n cuando se cumplen las condiciones.<\/p>\n<h3>Aplicar cup\u00f3n program\u00e1ticamente<\/h3>\n<p>Por experiencia, he aprendido que enganchar el c\u00f3digo para aplicar y quitar cupones funciona mejor y de manera m\u00e1s consistente usando los siguientes dos ganchos; uno para el carrito (<code>woocommerce_before_cart<\/code>) y otro para la caja (<code>woocommerce_before_checkout_form<\/code>).<\/p>\n<p>Dentro de la funci\u00f3n, todo lo que tenemos que hacer es verificar las condiciones que queremos. WooCommerce ofrece funciones para obtener el objeto del carrito <code>with WC()-&gt;cart<\/code>que podemos usar para obtener toda la informaci\u00f3n que necesitamos sobre el carrito, como sus art\u00edculos y totales. Como ejemplo, el siguiente c\u00f3digo aplicar\u00e1 un descuento si el total del carrito (excluyendo cualquier descuento) est\u00e1 por encima de cierta cantidad.<\/p>\n<p>Tambi\u00e9n debemos asegurarnos de que si no se cumplen las condiciones, debemos eliminar el descuento si se agreg\u00f3 previamente. En nuestro ejemplo, imagine que el cliente excedi\u00f3 la cantidad m\u00e1xima, pero luego fue al carrito, elimin\u00f3 algunos art\u00edculos y, por lo tanto, volvi\u00f3 a estar por debajo de la cantidad requerida. Como los cupones no se aplican autom\u00e1ticamente, los cupones aplicados tambi\u00e9n deben eliminarse program\u00e1ticamente.<\/p>\n<h4>Usando<code>apply_coupon<\/code><\/h4>\n<p>Los cupones se agregan al objeto del carrito <code>apply_coupon()<\/code>proporcionando el c\u00f3digo de cup\u00f3n como par\u00e1metro y se eliminan del objeto del carrito <code>remove_coupon()<\/code>con el c\u00f3digo de cup\u00f3n como par\u00e1metro. Suficientemente simple. Tambi\u00e9n podemos utilizar la funci\u00f3n tan acertadamente nombrada <code>get_applied_coupons()<\/code>en el objeto del carrito para comprobar si nuestro cup\u00f3n ya se ha 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>Si no est\u00e1 familiarizado con el uso de PHP orientado a objetos en WordPress; aqu\u00ed hay un resumen r\u00e1pido de c\u00f3mo funciona lo anterior: La <code>__construct()<\/code>funci\u00f3n se ejecutar\u00e1 cada vez que se inicialice la clase, lo que hacemos inmediatamente despu\u00e9s de la clase. En el interior <code>__construct()<\/code>, por lo general, agregar\u00e1 todos los ganchos como lo har\u00eda normalmente, por ejemplo, en el interior <code>functions.php<\/code>. Para que WordPress encuentre nuestras funciones dentro de nuestra clase, debemos indicarle al enlace que se refiera a una funci\u00f3n definida en una matriz que consiste en <code>$this<\/code>(el objeto de la clase) y el nombre de la funci\u00f3n.<\/p>\n<p>Dentro de la funci\u00f3n <code>addDiscount()<\/code>programamos en nuestras condiciones. En el ejemplo anterior, busco el uso total del carrito <code>WC()-&gt;cart-&gt;get_subtotal()<\/code>y lo comparo con mis condiciones, por encima de 500.<\/p>\n<p>Nota: si necesita obtener y comparar los totales del carrito, tenga en cuenta que la mayor\u00eda de los totales son cupones incluidos. Por ejemplo los m\u00e1s familiares <code>WC()-&gt;cart-&gt;get_cart_contents_total()<\/code>le devolver\u00e1n el total antes del env\u00edo pero con los descuentos incluidos; lo que significa que si su descuento se aplic\u00f3 anteriormente, este total ser\u00e1 incorrecto para comparar.<\/p>\n<p>Puede llamar <code>apply_coupon()<\/code>sin verificar si el cup\u00f3n ya se ha aplicado (la <code>if<\/code>verificaci\u00f3n en la l\u00ednea n. \u00b0 14), porque la funci\u00f3n <code>apply_coupon()<\/code>misma se asegurar\u00e1 de no volver a agregarlo si se aplic\u00f3 antes. Sin embargo, esta <code>if<\/code>verificaci\u00f3n evita que el cliente reciba un mensaje de error que dice &quot;El cup\u00f3n ya se ha aplicado&quot; cada vez que se actualiza el carrito.<\/p>\n<p>As\u00ed es como aparecer\u00e1 su descuento en los totales del carrito en carrito y pago:<\/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=\"C\u00f3mo agregar mediante programaci\u00f3n un descuento personalizado a WooCommerce Checkout\" ><\/a><\/p>\n<h4>Sus condiciones de descuento<\/h4>\n<p>Las condiciones de su cup\u00f3n dependen completamente de usted y sus necesidades. Configur\u00e9 algunas condiciones de ejemplo 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\">agregar una tarifa personalizada en una publicaci\u00f3n anterior<\/a>, por ejemplo, seg\u00fan la ubicaci\u00f3n de env\u00edo o qu\u00e9 productos est\u00e1n en el carrito. Tambi\u00e9n puede comparar la fecha de hoy si desea otorgar un descuento especial de Navidad o Halloween, u otorgar un descuento basado en las condiciones del cliente que inici\u00f3 sesi\u00f3n.<\/p>\n<p>Si prefiere aplicar el cup\u00f3n seg\u00fan la configuraci\u00f3n que haya establecido en el cup\u00f3n mismo, por ejemplo, excluir o incluir ciertas ID de productos, tambi\u00e9n puede hacerlo. Puede instanciar un objeto del cup\u00f3n desde el c\u00f3digo del cup\u00f3n, as\u00ed:<\/p>\n<pre><code>$coupon = new WC_Coupon($this-&gt;coupon_code);<\/code><\/pre>\n<p>Con ese objeto de cup\u00f3n, tiene acceso a todas las funciones para obtener cualquier configuraci\u00f3n que haya establecido en el cup\u00f3n. Por ejemplo, obtener ID de productos que deben incluirse para el cup\u00f3n:<\/p>\n<pre><code>$required_products = $coupon-&gt;get_product_ids();<\/code><\/pre>\n<p>Consulte la <a href=\"https:\/\/docs.woocommerce.com\/wc-apidocs\/class-WC_Coupon.html\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">documentaci\u00f3n de la clase WC_Coupon<\/a> para ver c\u00f3mo puede obtener lo que necesita.<\/p>\n<h3>Arreglar la etiqueta visible del cup\u00f3n<\/h3>\n<p>El cup\u00f3n ya deber\u00eda agregarse y eliminarse cuando su carrito cumpla o no cumpla con las condiciones establecidas en <code>addDiscount()<\/code>. Sin embargo, en la tabla de totales tanto en el carrito como en el pago, el descuento se muestra como &quot;Cup\u00f3n: ejemplo&quot; (o cualquiera que sea su c\u00f3digo de cup\u00f3n). \u00a1Eso no es bueno! Afortunadamente, es f\u00e1cil cambiar esta etiqueta usando el filtro <code>woocommerce_cart_totals_coupon_label<\/code>. Agregaremos el filtro a nuestro <code>__construct()<\/code>y definiremos una funci\u00f3n:<\/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>Con el filtro obtenemos acceso al objeto cup\u00f3n como segundo par\u00e1metro. Con el objeto de cup\u00f3n podemos verificar su propiedad, <code>code<\/code>si coincide o no con nuestro c\u00f3digo de cup\u00f3n personalizado. Si es as\u00ed, devolvemos la etiqueta que queramos. Ajuste la salida de la etiqueta a lo que quiera. De lo contrario, devolvemos la etiqueta de cup\u00f3n predeterminada.<\/p>\n<h3>Eliminar la opci\u00f3n de usuario para eliminar el descuento<\/h3>\n<p>Otra cosa que puede haber notado en la pantalla de nuestro descuento en el carrito y el pago es que tiene un enlace &quot;[Eliminar]&quot; despu\u00e9s de su monto. Este es el comportamiento predeterminado de los cupones en WooCommerce, pero en nuestro caso no es deseable. Tanto porque podr\u00eda confundir a los clientes como porque nuestro c\u00f3digo lo volver\u00eda a aplicar despu\u00e9s de eliminarlo.<\/p>\n<p>WooCommerce proporciona el filtro <code>woocommerce_cart_totals_coupon_html<\/code>para la salida de la cantidad. Afortunadamente, WooCommerce proporciona la salida HTML de solo la cantidad como tercer par\u00e1metro para este filtro. Simplemente podemos devolver esto en lugar de asegurarnos de que nuestro descuento se presente correctamente con la moneda y todo.<\/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 la funci\u00f3n de cup\u00f3n para los clientes<\/h3>\n<p>Los cupones deben activarse en WooCommerce para que funcione nuestra funcionalidad de descuento, pero tenga en cuenta que esto agregar\u00e1 la opci\u00f3n para que los clientes ingresen manualmente los c\u00f3digos de cup\u00f3n tanto en el carrito como en el pago. Si no desea mostrar que su tienda web tiene la funcionalidad de cupones y, especialmente, no permitir que los clientes ingresen c\u00f3digos de cupones manualmente, tambi\u00e9n puede hacerlo.<\/p>\n<h4>Eliminarlo de la caja<\/h4>\n<p>Eliminar la funci\u00f3n de cup\u00f3n del pago es f\u00e1cil y se puede hacer dentro de nuestra clase. Simplemente quitamos el gancho que representa la \u00abcaja&quot; del cup\u00f3n, as\u00ed:<\/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>Quitarlo del carrito<\/h4>\n<p>Desafortunadamente, eliminar la funcionalidad del c\u00f3digo de cup\u00f3n en el carrito no es tan f\u00e1cil como est\u00e1 codificado en una plantilla. Deber\u00e1 anular la plantilla del carrito de WooCommerce para eliminar la funcionalidad del cup\u00f3n. Copie el archivo <code>pluginswoocommercetemplatescartcart.php<\/code>en <code>your-themewoocommercecartcart.php<\/code>.<\/p>\n<p>Los archivos de plantilla de WooCommerce cambian constantemente, por lo que darte un n\u00famero de l\u00ednea exacto no ayudar\u00eda. Pero encontrar\u00e1 el c\u00f3digo que genera la entrada y el bot\u00f3n para el cup\u00f3n cerca de la parte inferior del archivo; luciendo algo as\u00ed:<\/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>Lo que debe hacer es comentar la salida relacionada con el cup\u00f3n. Recomiendo agregar un comentario de PHP <code>\/*<\/code>justo antes de <code>if<\/code>-check y cerrarlo <code>*\/<\/code>justo despu\u00e9s del par\u00e9ntesis de cierre. Al igual que:<\/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>\u00a1En este punto, la funcionalidad de cupones de su tienda web deber\u00eda estar pr\u00e1cticamente oculta para los clientes! Pero su descuento personalizado deber\u00eda funcionar perfectamente bien.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fuente de grabaci\u00f3n:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/awhitepixel.com\" class=\"external external_icon\">awhitepixel.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>En este tutorial, veremos c\u00f3mo agregar un descuento program\u00e1ticamente en WooCommerce. Usamos cupones pero lo hacemos autom\u00e1tico y ocultamos que es un cup\u00f3n.<\/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":[892,892,810,914,1110,914,810,840,840,851,851,861,861],"tags":[1172],"class_list":["post-233569","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-codigo","category-complementos","category-otro","category-n-a","category-tutoriales","category-woocommerce-2","category-wordpress-2","tag-affiai-es"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts\/233569","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/comments?post=233569"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts\/233569\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/media\/152867"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/media?parent=233569"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/categories?post=233569"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/tags?post=233569"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}