{"id":21617,"date":"2024-09-05T07:25:46","date_gmt":"2024-09-05T11:25:46","guid":{"rendered":"https:\/\/dinorank.com\/en-us\/blog-seo\/?p=21617"},"modified":"2025-06-05T05:02:26","modified_gmt":"2025-06-05T09:02:26","slug":"how-to-implement-structured-data-in-wordpress","status":"publish","type":"post","link":"https:\/\/dinorank.com\/en-us\/blog-seo\/how-to-implement-structured-data-in-wordpress\/","title":{"rendered":"How to Implement Structured Data in WordPress in 4 Steps"},"content":{"rendered":"\n<p>In SEO, any advantage to <strong>stand out from the competition<\/strong> is welcome. One way to make your website more visual and attractive in Google search results is by implementing <strong>structured data<\/strong>.<\/p>\n\n\n\n<p>Thanks to them, users will have <strong>more information<\/strong> about what they will find on your website, and the search engine will also be able to <strong>better understand how your content is structured<\/strong>.<\/p>\n\n\n\n<p>Do you want to implement these structured data on your WordPress website? Today, you&#8217;re going to learn how to do it like a pro.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">What Structured Data Is<\/h2>\n\n\n\n<p>Structured data is a standardized format that allows <strong>providing additional and specific information to users<\/strong> on the Google results page.<\/p>\n\n\n\n<p>They use a vocabulary known as <strong>Schema<\/strong> and are usually implemented on your website through JSON-LD code.<\/p>\n\n\n\n<p>They present a <strong>clear and consistent structure<\/strong>, enabling search engines to interpret and process the information more effectively.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img fetchpriority=\"high\" decoding=\"async\" width=\"1024\" height=\"249\" src=\"https:\/\/dinorank.com\/en-us\/blog-seo\/wp-content\/uploads\/2024\/08\/What-is-structured-data-1024x249.png\" alt=\"What is structured data\" class=\"wp-image-21632\" title=\"What is structured data\" srcset=\"https:\/\/dinorank.com\/en-us\/blog-seo\/wp-content\/uploads\/2024\/08\/What-is-structured-data-1024x249.png 1024w, https:\/\/dinorank.com\/en-us\/blog-seo\/wp-content\/uploads\/2024\/08\/What-is-structured-data-300x73.png 300w, https:\/\/dinorank.com\/en-us\/blog-seo\/wp-content\/uploads\/2024\/08\/What-is-structured-data-768x187.png 768w, https:\/\/dinorank.com\/en-us\/blog-seo\/wp-content\/uploads\/2024\/08\/What-is-structured-data.png 1137w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n<h2 class=\"wp-block-heading\">Why Structured Data Is Important for SEO<\/h2>\n\n\n\n<p>The benefits of applying structured data to your website go beyond contributing to SEO improvement. By implementing them, you&#8217;ll notice that:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Increases your page&#8217;s visibility<\/strong>: by appearing as a more <strong>enhanced<\/strong> result, it will stand out more against other websites on the Google results page.<\/li>\n\n\n\n<li><strong>Boosts the click-through rate (CTR)<\/strong>: these enriched search results are more eye-catching and provide additional information on the search results page, which conveys greater trust to the user and encourages clicks.<\/li>\n\n\n\n<li><strong>Improves Google&#8217;s understanding of your website<\/strong>: Structured data allows search engines to better understand the context of web pages, clarifying any <strong>ambiguous terms.<\/strong><\/li>\n<\/ul>\n\n\n\n<p>You can achieve these benefits regardless of your business sector, as there is a wide variety of structured data.<\/p>\n\n\n\n<p>Later in the article, you will see examples of the most common structured data, but first, how about I tell you how to implement them on your WordPress site in 4 simple steps?<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">How to Implement Structured Data in WordPress<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li><a href=\"#step1\">Download and activate a tag insertion plugin<\/a><\/li>\n\n\n\n<li><a href=\"#step2\">Access the plugin settings<\/a><\/li>\n\n\n\n<li><a href=\"#step3\">Insert the code snippet<\/a><\/li>\n\n\n\n<li><a href=\"#step4\">Validate the structured data<\/a><\/li>\n<\/ol>\n\n\n\n<p>One of the safest and easiest ways to implement your structured data is to use a plugin that allows you to insert scripts into the <strong>&lt;head&gt;<\/strong> of your site without the need to edit theme files.<\/p>\n\n\n\n<p>I recommend using the <strong>free plugin<\/strong> <a href=\"https:\/\/wordpress.org\/plugins\/header-footer-code-manager\/\" target=\"_blank\" rel=\"noreferrer noopener\">Header Footer Code Manager<\/a> due to its ease of use.<\/p>\n\n\n\n<p>However, most similar plugins work in a similar way, so this tutorial can also be useful if you opt for other alternatives.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"step1\">Step 1: Download and activate a tag insertion plugin.<\/h3>\n\n\n\n<p>You can <strong>download the Header Footer Code Manager<\/strong>, as I have suggested, or look for other <strong>alternatives<\/strong> such as <a href=\"https:\/\/wordpress.org\/plugins\/code-snippets\/\" target=\"_blank\" rel=\"noreferrer noopener\">Code Snippets<\/a> or <a href=\"https:\/\/wordpress.org\/plugins\/insert-headers-and-footers\/\" target=\"_blank\" rel=\"noreferrer noopener\">WPCode<\/a>, although the latter has paid features.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2024\/06\/descargar-activar-header-footer-code-manager.webp\" alt=\"Download and activate Header Footer Code Manager\" class=\"wp-image-23813\" title=\"Download and activate Header Footer Code Manager\"\/><\/figure><\/div>\n\n\n<h3 class=\"wp-block-heading\" id=\"step2\">Step 2: Access the plugin settings<\/h3>\n\n\n\n<p>To do this, go to the WordPress navigation panel, navigate to &#8220;<strong>HFCM<\/strong>&#8221; in the sidebar, and select &#8220;<strong>Add New<\/strong>&#8220;:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" width=\"1024\" height=\"506\" src=\"https:\/\/dinorank.com\/en-us\/blog-seo\/wp-content\/uploads\/2024\/08\/Header-Footer-Code-Manager-plugin-settings-1024x506.png\" alt=\"\" class=\"wp-image-21634\" title=\"Header Footer Code Manager plugin settings\" srcset=\"https:\/\/dinorank.com\/en-us\/blog-seo\/wp-content\/uploads\/2024\/08\/Header-Footer-Code-Manager-plugin-settings-1024x506.png 1024w, https:\/\/dinorank.com\/en-us\/blog-seo\/wp-content\/uploads\/2024\/08\/Header-Footer-Code-Manager-plugin-settings-300x148.png 300w, https:\/\/dinorank.com\/en-us\/blog-seo\/wp-content\/uploads\/2024\/08\/Header-Footer-Code-Manager-plugin-settings-768x380.png 768w, https:\/\/dinorank.com\/en-us\/blog-seo\/wp-content\/uploads\/2024\/08\/Header-Footer-Code-Manager-plugin-settings-1536x759.png 1536w, https:\/\/dinorank.com\/en-us\/blog-seo\/wp-content\/uploads\/2024\/08\/Header-Footer-Code-Manager-plugin-settings.png 1681w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n<p>Once there, you should fill in the fields as follows:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Script Name<\/strong>: For example, &#8220;<em>Article Structured Data<\/em>&#8220;.<\/li>\n\n\n\n<li><strong>Snippet Type: <\/strong>Select <em>JavaScript<\/em> from the dropdown menu.<\/li>\n\n\n\n<li><strong>Site Display: <\/strong>Select <em>Specific Posts<\/em>, or specific pages if it&#8217;s structured data for pages. You also have the option to apply it to all posts or all pages.<\/li>\n\n\n\n<li><strong>Post (Page) List:&nbsp;<\/strong>If you selected to apply the structured data to specific pages or posts, select them here.<\/li>\n\n\n\n<li><strong>Location: <\/strong>Select <em>Header<\/em>.<\/li>\n\n\n\n<li><strong>Device Display: <\/strong>Select <em>All Devices<\/em>.<\/li>\n\n\n\n<li><strong>Status<\/strong>: Make sure it is set to <em>Active<\/em>.<\/li>\n<\/ol>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" width=\"1024\" height=\"429\" src=\"https:\/\/dinorank.com\/en-us\/blog-seo\/wp-content\/uploads\/2024\/08\/HFCM-configured-1024x429.png\" alt=\"\" class=\"wp-image-21636\" title=\"HFCM configured\" srcset=\"https:\/\/dinorank.com\/en-us\/blog-seo\/wp-content\/uploads\/2024\/08\/HFCM-configured-1024x429.png 1024w, https:\/\/dinorank.com\/en-us\/blog-seo\/wp-content\/uploads\/2024\/08\/HFCM-configured-300x126.png 300w, https:\/\/dinorank.com\/en-us\/blog-seo\/wp-content\/uploads\/2024\/08\/HFCM-configured-768x321.png 768w, https:\/\/dinorank.com\/en-us\/blog-seo\/wp-content\/uploads\/2024\/08\/HFCM-configured.png 1472w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n<h3 class=\"wp-block-heading\" id=\"step3\">Step 3: Insert the code snippet<\/h3>\n\n\n\n<p>Once the code snippet is configured, all that&#8217;s left is to insert it.<\/p>\n\n\n\n<p>To do this, scroll down and go to the section &#8220;<strong>Snippet \/ Code<\/strong>&#8220;. There you can paste the JSON-LD code you generated with ChatGPT to enhance the presence of structured data.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"600\" src=\"https:\/\/dinorank.com\/en-us\/blog-seo\/wp-content\/uploads\/2024\/08\/Insert-code-snippets-to-generate-structured-data-1024x600.png\" alt=\"\" class=\"wp-image-21637\" title=\"Insert code snippets to generate structured data\" srcset=\"https:\/\/dinorank.com\/en-us\/blog-seo\/wp-content\/uploads\/2024\/08\/Insert-code-snippets-to-generate-structured-data-1024x600.png 1024w, https:\/\/dinorank.com\/en-us\/blog-seo\/wp-content\/uploads\/2024\/08\/Insert-code-snippets-to-generate-structured-data-300x176.png 300w, https:\/\/dinorank.com\/en-us\/blog-seo\/wp-content\/uploads\/2024\/08\/Insert-code-snippets-to-generate-structured-data-768x450.png 768w, https:\/\/dinorank.com\/en-us\/blog-seo\/wp-content\/uploads\/2024\/08\/Insert-code-snippets-to-generate-structured-data.png 1058w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n<p>After this, make sure everything is correct and click <strong>save<\/strong>.<\/p>\n\n\n\n<div id=\"brxe-dac047\" class=\"brxe-block p-2 gap-15\"><div id=\"brxe-481bc6\" class=\"brxe-text-basic h3\">Another SEO newsletter?\n\nYes.\n<\/div><div id=\"brxe-b11ebb\" class=\"brxe-text-basic\">This is what we can offer you:<\/div><div id=\"brxe-97bf62\" class=\"brxe-text-basic\"><strong>No fluff, no hype. 100% honesty. 100% straight to the point<\/strong>. All we need is your email and a bit of your attention\u2014we\u2019ll handle the rest.\n\nIt\u2019s your call.\n<\/div><div id=\"brxe-omkwmy\" data-script-id=\"omkwmy\" class=\"brxe-code\"><style>@import url(https:\/\/fonts.bunny.net\/css?family=source-sans-pro:400,700);<\/style>\n<style>\n#_form_311_{font-size:14px;line-height:1.6;font-family:arial, helvetica, sans-serif;margin:0}#_form_311_ *{outline:0}._form_hide{display:none;visibility:hidden}._form_show{display:block;visibility:visible}#_form_311_._form-top{top:0}#_form_311_._form-bottom{bottom:0}#_form_311_._form-left{left:0}#_form_311_._form-right{right:0}#_form_311_ input[type=\"text\"],#_form_311_ input[type=\"tel\"],#_form_311_ input[type=\"date\"],#_form_311_ textarea{padding:6px;height:auto;border:#979797 1px solid;border-radius:4px;color:#000 !important;font-size:14px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#_form_311_ textarea{resize:none}#_form_311_ ._submit{-webkit-appearance:none;cursor:pointer;font-family:arial, sans-serif;font-size:14px;text-align:center;background:#00C4A7 !important;border:0 !important;-moz-border-radius:3px !important;-webkit-border-radius:3px !important;border-radius:3px !important;color:#FFFFFF !important;padding:14px !important}#_form_311_ ._submit:disabled{cursor:not-allowed;opacity:0.4}#_form_311_ ._submit.processing{position:relative}#_form_311_ ._submit.processing::before{content:\"\";width:1em;height:1em;position:absolute;z-index:1;top:50%;left:50%;border:double 3px transparent;border-radius:50%;background-image:linear-gradient(#00C4A7, #00C4A7), conic-gradient(#00C4A7, #FFFFFF);background-origin:border-box;background-clip:content-box, border-box;animation:1200ms ease 0s infinite normal none running _spin}#_form_311_ ._submit.processing::after{content:\"\";position:absolute;top:0;bottom:0;left:0;right:0;background:#00C4A7 !important;border:0 !important;-moz-border-radius:3px !important;-webkit-border-radius:3px !important;border-radius:3px !important;color:#FFFFFF !important;padding:14px !important}@keyframes _spin{0%{transform:translate(-50%, -50%) rotate(90deg)}100%{transform:translate(-50%, -50%) rotate(450deg)}}#_form_311_ ._close-icon{cursor:pointer;background-image:url(\"https:\/\/d226aj4ao1t61q.cloudfront.net\/esfkyjh1u_forms-close-dark.png\");background-repeat:no-repeat;background-size:14.2px 14.2px;position:absolute;display:block;top:11px;right:9px;overflow:hidden;width:16.2px;height:16.2px}#_form_311_ ._close-icon:before{position:relative}#_form_311_ ._form-body{margin-bottom:30px}#_form_311_ ._form-image-left{width:150px;float:left}#_form_311_ ._form-content-right{margin-left:164px}#_form_311_ ._form-branding{color:#fff;font-size:10px;clear:both;text-align:left;margin-top:30px;font-weight:100}#_form_311_ ._form-branding ._logo{display:block;width:130px;height:14px;margin-top:6px;background-image:url(\"https:\/\/d226aj4ao1t61q.cloudfront.net\/hh9ujqgv5_aclogo_li.png\");background-size:130px auto;background-repeat:no-repeat}#_form_311_ .form-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}#_form_311_ ._form-label,#_form_311_ ._form_element ._form-label{font-weight:bold;margin-bottom:5px;display:block}#_form_311_._dark ._form-branding{color:#333}#_form_311_._dark ._form-branding ._logo{background-image:url(\"https:\/\/d226aj4ao1t61q.cloudfront.net\/jftq2c8s_aclogo_dk.png\")}#_form_311_ ._form_element{position:relative;margin-bottom:10px;font-size:0;max-width:100%}#_form_311_ ._form_element *{font-size:14px}#_form_311_ ._form_element._clear{clear:both;width:100%;float:none}#_form_311_ ._form_element._clear:after{clear:left}#_form_311_ ._form_element input[type=\"text\"],#_form_311_ ._form_element input[type=\"date\"],#_form_311_ ._form_element select,#_form_311_ ._form_element textarea:not(.g-recaptcha-response){display:block;width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;font-family:inherit}#_form_311_ ._field-wrapper{position:relative}#_form_311_ ._inline-style{float:left}#_form_311_ ._inline-style input[type=\"text\"]{width:150px}#_form_311_ ._inline-style:not(._clear){margin-right:20px}#_form_311_ ._form_element img._form-image{max-width:100%}#_form_311_ ._form_element ._form-fieldset{border:0;padding:0.01em 0 0 0;margin:0;min-width:0}#_form_311_ ._clear-element{clear:left}#_form_311_ ._full_width{width:100%}#_form_311_ ._form_full_field{display:block;width:100%;margin-bottom:10px}#_form_311_ input[type=\"text\"]._has_error,#_form_311_ textarea._has_error{border:#F37C7B 1px solid}#_form_311_ input[type=\"checkbox\"]._has_error{outline:#F37C7B 1px solid}#_form_311_ ._show_be_error{float:left}#_form_311_ ._error{display:block;position:absolute;font-size:14px;z-index:10000001}#_form_311_ ._error._above{padding-bottom:4px;bottom:39px;right:0}#_form_311_ ._error._below{padding-top:8px;top:100%;right:0}#_form_311_ ._error._above ._error-arrow{bottom:-4px;right:15px;border-left:8px solid transparent;border-right:8px solid transparent;border-top:8px solid #FFDDDD}#_form_311_ ._error._below ._error-arrow{top:0;right:15px;border-left:8px solid transparent;border-right:8px solid transparent;border-bottom:8px solid #FFDDDD}#_form_311_ ._error-inner{padding:12px 12px 12px 36px;background-color:#FFDDDD;background-image:url(\"data:image\/svg+xml,%3Csvg width='16' height='16' viewBox='0 0 16 16' fill='none' xmlns='http:\/\/www.w3.org\/2000\/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M16 8C16 12.4183 12.4183 16 8 16C3.58172 16 0 12.4183 0 8C0 3.58172 3.58172 0 8 0C12.4183 0 16 3.58172 16 8ZM9 3V9H7V3H9ZM9 13V11H7V13H9Z' fill='%23CA0000'\/%3E%3C\/svg%3E\");background-repeat:no-repeat;background-position:12px center;font-size:14px;font-family:arial, sans-serif;font-weight:600;line-height:16px;color:#000;text-align:center;text-decoration:none;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;box-shadow:0 1px 4px rgba(31, 33, 41, 0.298295)}@media only screen and (max-width:319px){#_form_311_ ._error-inner{padding:7px 7px 7px 25px;font-size:12px;line-height:12px;background-position:4px center;max-width:100px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}}#_form_311_ ._error-inner._form_error{margin-bottom:5px;text-align:left}#_form_311_ ._button-wrapper ._error-inner._form_error{position:static}#_form_311_ ._error-inner._no_arrow{margin-bottom:10px}#_form_311_ ._error-arrow{position:absolute;width:0;height:0}#_form_311_ ._error-html{margin-bottom:10px}.pika-single{z-index:10000001 !important}#_form_311_ input[type=\"text\"].datetime_date{width:69%;display:inline}#_form_311_ select.datetime_time{width:29%;display:inline;height:32px}#_form_311_ input[type=\"date\"].datetime_date{width:69%;display:inline-flex}#_form_311_ input[type=\"time\"].datetime_time{width:29%;display:inline-flex}@media (min-width:320px) and (max-width:667px){::-webkit-scrollbar{display:none}#_form_311_{margin:0;width:100%;min-width:100%;max-width:100%;box-sizing:border-box}#_form_311_ *{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;font-size:1em}#_form_311_ ._form-content{margin:0;width:100%}#_form_311_ ._form-inner{display:block;min-width:100%}#_form_311_ ._form-title,#_form_311_ ._inline-style{margin-top:0;margin-right:0;margin-left:0}#_form_311_ ._form-title{font-size:1.2em}#_form_311_ ._form_element{margin:0 0 20px;padding:0;width:100%}#_form_311_ ._form-element,#_form_311_ ._inline-style,#_form_311_ input[type=\"text\"],#_form_311_ label,#_form_311_ p,#_form_311_ textarea:not(.g-recaptcha-response){float:none;display:block;width:100%}#_form_311_ ._row._checkbox-radio label{display:inline}#_form_311_ ._row,#_form_311_ p,#_form_311_ label{margin-bottom:0.7em;width:100%}#_form_311_ ._row input[type=\"checkbox\"],#_form_311_ ._row input[type=\"radio\"]{margin:0 !important;vertical-align:middle !important}#_form_311_ ._row input[type=\"checkbox\"]+span label{display:inline}#_form_311_ ._row span label{margin:0 !important;width:initial !important;vertical-align:middle !important}#_form_311_ ._form-image{max-width:100%;height:auto !important}#_form_311_ input[type=\"text\"]{padding-left:10px;padding-right:10px;font-size:16px;line-height:1.3em;-webkit-appearance:none}#_form_311_ input[type=\"radio\"],#_form_311_ input[type=\"checkbox\"]{display:inline-block;width:1.3em;height:1.3em;font-size:1em;margin:0 0.3em 0 0;vertical-align:baseline}#_form_311_ button[type=\"submit\"]{padding:20px;font-size:1.5em}#_form_311_ ._inline-style{margin:20px 0 0 !important}#_form_311_ ._inline-style input[type=\"text\"]{width:100%}}#_form_311_ .sms_consent_checkbox{position:relative;width:100%;display:flex;align-items:flex-start;padding:20px 0}#_form_311_ .sms_consent_checkbox input[type=\"checkbox\"]{float:left;margin:5px 10px 10px 0}#_form_311_ .sms_consent_checkbox .sms_consent_message{display:inline;float:left;text-align:left;margin-bottom:10px;font-size:14px;color:#7D8799}#_form_311_ .sms_consent_checkbox .sms_consent_message.sms_consent_mini{width:90%}#_form_311_ .sms_consent_checkbox ._error._above{right:auto;bottom:0}#_form_311_ .sms_consent_checkbox ._error._above ._error-arrow{right:auto;left:5px}@media (min-width:320px) and (max-width:667px){#_form_311_ .sms_consent_checkbox ._error._above{top:-30px;left:0;bottom:auto}}#_form_311_ .field-required{color:#FF0000}#_form_311_{position:relative;text-align:left;margin:25px auto 0;padding:20px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;background:rgba(255, 255, 255, 0) !important;border-top:0px solid #737373 !important;border-right:0px solid #737373 !important;border-bottom:0px solid #737373 !important;border-left:0px solid #737373 !important;max-width:800px;-moz-border-radius:1px !important;-webkit-border-radius:1px !important;border-radius:1px !important;color:#000000}#_form_311_ ._show_be_error{min-width:100%}#_form_311_._inline-form,#_form_311_._inline-form ._form-content{font-family:Source Sans Pro;font-size:14px;font-weight:400}#_form_311_._inline-form ._row span,#_form_311_._inline-form ._row label{font-family:Source Sans Pro;font-size:14px;font-weight:400;line-height:1.6em;color:#888 !important}#_form_311__inlineform input[type=\"text\"],#_form_311__inlineform input[type=\"date\"],#_form_311__inlineform input[type=\"tel\"],#_form_311__inlineform select,#_form_311__inlineform textarea:not(.g-recaptcha-response){font-family:Source Sans Pro;font-size:14px;font-weight:400;font-color:#000000;line-height:1.6em}#_form_311_._inline-form ._html-code *:not(h1, h2, h3, h4, h5, h6),#_form_311_._inline-form .sms_consent_message,#_form_311_._inline-form ._form-thank-you{font-family:Source Sans Pro;font-size:14px;font-weight:400;color:#888 !important}#_form_311_._inline-form ._form-label,#_form_311_._inline-form ._form-emailidentifier,#_form_311_._inline-form ._form-checkbox-option-label{font-family:Source Sans Pro;font-size:14px;font-weight:700;line-height:1.6em;color:#888 !important}#_form_311_._inline-form ._submit{margin-top:12px;font-family:Source Sans Pro;font-size:14px;font-weight:400}#_form_311_._inline-form ._html-code h1,#_form_311_._inline-form ._html-code h2,#_form_311_._inline-form ._html-code h3,#_form_311_._inline-form ._html-code h4,#_form_311_._inline-form ._html-code h5,#_form_311_._inline-form ._html-code h6,#_form_311_._inline-form ._form-title{font-family:Source Sans Pro;font-size:22px;line-height:normal;font-weight:700;color:black;margin-bottom:0;display:block}#_form_311_._inline-form ._form-branding{font-family:\"IBM Plex Sans\", Helvetica, sans-serif;font-size:13px;font-weight:100;font-style:normal;text-decoration:none}#_form_311_:before,#_form_311_:after{content:\" \";display:table}#_form_311_:after{clear:both}#_form_311_._inline-style{width:auto;display:inline-block}#_form_311_._inline-style input[type=\"text\"],#_form_311_._inline-style input[type=\"date\"]{padding:10px 12px}#_form_311_._inline-style button._inline-style{position:relative;top:27px}#_form_311_._inline-style p{margin:0}#_form_311_._inline-style ._button-wrapper{position:relative;margin:16px 12.5px 0 20px}#_form_311_ ._form-thank-you{position:relative;left:0;right:0;text-align:center;font-size:18px}#_form_311_ ._form-pc-confirmation ._submit{margin-top:16px}@media (min-width:320px) and (max-width:667px){#_form_311_._inline-form._inline-style ._inline-style._button-wrapper{margin-top:20px !important;margin-left:0 !important}}#_form_311_ .iti{width:100%}#_form_311_ .iti.iti--allow-dropdown.iti--separate-dial-code{width:100%}#_form_311_ .iti input{width:100%;border:#979797 1px solid;border-radius:4px}#_form_311_ .iti--separate-dial-code .iti__selected-flag{background-color:#FFFFFF;border-radius:4px}#_form_311_ .iti--separate-dial-code .iti__selected-flag:hover{background-color:rgba(0, 0, 0, 0.05)}#_form_311_ .iti__country-list{border-radius:4px;margin-top:4px;min-width:460px}#_form_311_ .iti__country-list--dropup{margin-bottom:4px}#_form_311_ .phone-error-hidden{display:none}#_form_311_ .phone-error{color:#E40E49}#_form_311_ .phone-input-error{border:1px solid #E40E49 !important}#_form_311_._inline-form ._form-content ._form-list-subscriptions-field fieldset{margin:0;margin-bottom:1.1428571429em;border:none;padding:0}#_form_311_._inline-form ._form-content ._form-list-subscriptions-field fieldset:last-child{margin-bottom:0}#_form_311_._inline-form ._form-content ._form-list-subscriptions-field legend{margin-bottom:1.1428571429em}#_form_311_._inline-form ._form-content ._form-list-subscriptions-field label{display:flex;align-items:flex-start;justify-content:flex-start;margin-bottom:0.8571428571em}#_form_311_._inline-form ._form-content ._form-list-subscriptions-field label:last-child{margin-bottom:0}#_form_311_._inline-form ._form-content ._form-list-subscriptions-field input{margin:0;margin-right:8px}#_form_311_._inline-form ._form-content ._form-list-subscriptions-field ._form-checkbox-option-label{display:block;font-weight:400;margin-top:-4px}#_form_311_._inline-form ._form-content ._form-list-subscriptions-field ._form-checkbox-option-label-with-description{display:block;font-weight:700;margin-top:-4px}#_form_311_._inline-form ._form-content ._form-list-subscriptions-field ._form-checkbox-option-description{margin:0;font-size:0.8571428571em}#_form_311_._inline-form ._form-content ._form-list-subscriptions-field ._form-subscriptions-unsubscribe-all-description{line-height:normal;margin-top:-2px}\n#_form_311_ ._submit{width:100%;font-family:\"Source Sans Pro\", Sans-serif !important;font-size:18px !important;font-weight:500 !important}#_form_311_ ._submit:hover{background-color:#04937E !important}#_form_311_ input#email{padding:3px 12px;background-color:#ffffff;border-radius:2px}#_form_311_._form{margin-top:-5px}#_form_311_ ._error._below{position:relative !important}#_form_311_ ._error._above{position:absolute !important}@media (min-width:320px) and (max-width:667px){#_form_311_ ._form_element{margin:0 0 0px}}<\/style>\n<form method=\"POST\" action=\"https:\/\/deandelafuenteromero.activehosted.com\/proc.php\" id=\"_form_311_\" class=\"_form _form_311 _inline-form  _dark\" novalidate data-styles-version=\"5\">\n  <input type=\"hidden\" name=\"u\" value=\"311\" \/>\n  <input type=\"hidden\" name=\"f\" value=\"311\" \/>\n  <input type=\"hidden\" name=\"s\" \/>\n  <input type=\"hidden\" name=\"c\" value=\"0\" \/>\n  <input type=\"hidden\" name=\"m\" value=\"0\" \/>\n  <input type=\"hidden\" name=\"act\" value=\"sub\" \/>\n  <input type=\"hidden\" name=\"v\" value=\"2\" \/>\n  <input type=\"hidden\" name=\"or\" value=\"1d0d99d99ed2973ea9179629b793b9aa\" \/>\n  <div class=\"_form-content\">\n    <div class=\"_form_element _x74577619 _full_width \" >\n      <label for=\"email\" class=\"_form-label\">\n      <\/label>\n      <div class=\"_field-wrapper\">\n        <input type=\"text\" id=\"email\" name=\"email\" placeholder=\"Enter your email\" required\/>\n      <\/div>\n    <\/div>\n    <div class=\"_form_element _x06467309 _full_width \" >\n      <fieldset class=\"_form-fieldset\">\n        <div class=\"_row\">\n          <legend for=\"field[136][]\" class=\"_form-label\">\n          <\/legend>\n        <\/div>\n        <input data-autofill=\"false\" type=\"hidden\" id=\"field[136][]\" name=\"field[136][]\" value=\"~|\">\n        <div class=\"_row _checkbox-radio\">\n          <input id=\"field_136I have read and accept the privacy policy\" type=\"checkbox\" name=\"field[136][]\"\n          value=\"I have read and accept the privacy policy\"                                                                                 required                                >\n          <span>\n            <label for=\"field_136I have read and accept the privacy policy\">\n              I have read and accept the privacy policy<span class=\"field-required\">\n              *\n            <\/span>\n          <\/label>\n        <\/span>\n      <\/div>\n    <\/fieldset>\n  <\/div>\n  <div class=\"_form_element _x77210210 _full_width \" >\n    <label for=\"ls\" class=\"_form-label\">\n      Verify that you are human<span class=\"field-required\">\n      *\n    <\/span>\n  <\/label>\n  <div class=\"g-recaptcha\" data-sitekey=\"6LcwIw8TAAAAACP1ysM08EhCgzd6q5JAOUR1a0Go\">\n  <\/div>\n<\/div>\n<div class=\"_form_element _x09639014 _full_width \" >\n  <input type=\"hidden\" name=\"field[121]\" value=\"\" \/>\n<\/div>\n<div class=\"_form_element _x64811239 _full_width \" >\n  <input type=\"hidden\" name=\"field[122]\" value=\"\" \/>\n<\/div>\n<div class=\"_form_element _x58860354 _full_width \" >\n  <input type=\"hidden\" name=\"field[123]\" value=\"\" \/>\n<\/div>\n<div class=\"_form_element _x23331849 _full_width \" >\n  <input type=\"hidden\" name=\"field[125]\" value=\"\" \/>\n<\/div>\n<div class=\"_form_element _x72046679 _full_width \" >\n  <input type=\"hidden\" name=\"field[126]\" value=\"\" \/>\n<\/div>\n<div class=\"_form_element _x41336277 _full_width \" >\n  <input type=\"hidden\" name=\"field[127]\" value=\"\" \/>\n<\/div>\n<div class=\"_button-wrapper _full_width\">\n  <button id=\"_form_311_submit\" class=\"_submit\" type=\"submit\">\n    Subscribe here\n  <\/button>\n<\/div>\n<div class=\"_clear-element\">\n<\/div>\n<\/div>\n<div class=\"_form-thank-you\" style=\"display:none;\">\n<\/div>\n<\/form><script>\nwindow.cfields = {\"136\":\"i_have_read_and_accept_the_privacy_policy\",\"121\":\"utm_campaign\",\"122\":\"utm_source\",\"123\":\"utm_medium\",\"125\":\"utm_content\",\"126\":\"utm_adset\",\"127\":\"utm_ad\"};\nwindow._show_thank_you = function(id, message, trackcmp_url, email) {\n    var form = document.getElementById('_form_' + id + '_'), thank_you = form.querySelector('._form-thank-you');\n    form.querySelector('._form-content').style.display = 'none';\n    thank_you.innerHTML = message;\n    thank_you.style.display = 'block';\n    const vgoAlias = typeof visitorGlobalObjectAlias === 'undefined' ? 'vgo' : visitorGlobalObjectAlias;\n    var visitorObject = window[vgoAlias];\n    if (email && typeof visitorObject !== 'undefined') {\n        visitorObject('setEmail', email);\n        visitorObject('update');\n    } else if (typeof(trackcmp_url) != 'undefined' && trackcmp_url) {\n        \/\/ Site tracking URL to use after inline form submission.\n        _load_script(trackcmp_url);\n    }\n    if (typeof window._form_callback !== 'undefined') window._form_callback(id);\n};\nwindow._show_unsubscribe = function(id, message, trackcmp_url, email) {\n    var form = document.getElementById('_form_' + id + '_'), unsub = form.querySelector('._form-thank-you');\n    var branding = form.querySelector('._form-branding');\n    if (branding) {\n        branding.style.display = 'none';\n    }\n    form.querySelector('._form-content').style.display = 'none';\n    unsub.style.display = 'block';\n    form.insertAdjacentHTML('afterend', message)\n    const vgoAlias = typeof visitorGlobalObjectAlias === 'undefined' ? 'vgo' : visitorGlobalObjectAlias;\n    var visitorObject = window[vgoAlias];\n    if (email && typeof visitorObject !== 'undefined') {\n        visitorObject('setEmail', email);\n        visitorObject('update');\n    } else if (typeof(trackcmp_url) != 'undefined' && trackcmp_url) {\n        \/\/ Site tracking URL to use after inline form submission.\n        _load_script(trackcmp_url);\n    }\n    if (typeof window._form_callback !== 'undefined') window._form_callback(id);\n};\nwindow._show_error = function(id, message, html) {\n    var form = document.getElementById('_form_' + id + '_'),\n        err = document.createElement('div'),\n        button = form.querySelector('button[type=\"submit\"]'),\n        old_error = form.querySelector('._form_error');\n    if (old_error) old_error.parentNode.removeChild(old_error);\n    err.innerHTML = message;\n    err.className = '_error-inner _form_error _no_arrow';\n    var wrapper = document.createElement('div');\n    wrapper.className = '_form-inner _show_be_error';\n    wrapper.appendChild(err);\n    button.parentNode.insertBefore(wrapper, button);\n    var submitButton = form.querySelector('[id^=\"_form\"][id$=\"_submit\"]');\n    submitButton.disabled = false;\n    submitButton.classList.remove('processing');\n    if (html) {\n        var div = document.createElement('div');\n        div.className = '_error-html';\n        div.innerHTML = html;\n        err.appendChild(div);\n    }\n};\nwindow._show_pc_confirmation = function(id, header, detail, show, email) {\n    var form = document.getElementById('_form_' + id + '_'), pc_confirmation = form.querySelector('._form-pc-confirmation');\n    if (pc_confirmation.style.display === 'none') {\n        form.querySelector('._form-content').style.display = 'none';\n        pc_confirmation.innerHTML = \"<div class='_form-title'>\" + header + \"<\/div>\" + \"<p>\" + detail + \"<\/p>\" +\n        \"<button class='_submit' id='hideButton'>Administrar preferencias<\/button>\";\n        pc_confirmation.style.display = 'block';\n        var mp = document.querySelector('input[name=\"mp\"]');\n        mp.value = '0';\n    } else {\n        form.querySelector('._form-content').style.display = 'inline';\n        pc_confirmation.style.display = 'none';\n    }\n\n    var hideButton = document.getElementById('hideButton');\n    \/\/ Add event listener to the button\n    hideButton.addEventListener('click', function() {\n        var submitButton = document.querySelector('#_form_311_submit');\n        submitButton.disabled = false;\n        submitButton.classList.remove('processing');\n        var mp = document.querySelector('input[name=\"mp\"]');\n        mp.value = '1';\n        const cacheBuster = new URL(window.location.href);\n        cacheBuster.searchParams.set('v', new Date().getTime());\n        window.location.href = cacheBuster.toString();\n    });\n\n    const vgoAlias = typeof visitorGlobalObjectAlias === 'undefined' ? 'vgo' : visitorGlobalObjectAlias;\n    var visitorObject = window[vgoAlias];\n    if (email && typeof visitorObject !== 'undefined') {\n        visitorObject('setEmail', email);\n        visitorObject('update');\n    } else if (typeof(trackcmp_url) != 'undefined' && trackcmp_url) {\n        \/\/ Site tracking URL to use after inline form submission.\n        _load_script(trackcmp_url);\n    }\n    if (typeof window._form_callback !== 'undefined') window._form_callback(id);\n};\nwindow._load_script = function(url, callback, isSubmit) {\n    var head = document.querySelector('head'), script = document.createElement('script'), r = false;\n    var submitButton = document.querySelector('#_form_311_submit');\n    script.charset = 'utf-8';\n    script.src = url;\n    if (callback) {\n        script.onload = script.onreadystatechange = function() {\n            if (!r && (!this.readyState || this.readyState == 'complete')) {\n                r = true;\n                callback();\n            }\n        };\n    }\n    script.onerror = function() {\n        if (isSubmit) {\n            if (script.src.length > 10000) {\n                _show_error(\"311\", \"Lo sentimos, ocurri\u00f3 un error con el env\u00edo. Acorta tus respuestas y vuelve a intentarlo.\");\n            } else {\n                _show_error(\"311\", \"Lo sentimos, ocurri\u00f3 un error con el env\u00edo. Vuelve a intentarlo.\");\n            }\n            submitButton.disabled = false;\n            submitButton.classList.remove('processing');\n        }\n    }\n\n    head.appendChild(script);\n};\n(function() {\n    var iti;\n    if (window.location.search.search(\"excludeform\") !== -1) return false;\n    var getCookie = function(name) {\n        var match = document.cookie.match(new RegExp('(^|; )' + name + '=([^;]+)'));\n        return match ? match[2] : null;\n    }\n    var setCookie = function(name, value) {\n        var now = new Date();\n        var time = now.getTime();\n        var expireTime = time + 1000 * 60 * 60 * 24 * 365;\n        now.setTime(expireTime);\n        document.cookie = name + '=' + value + '; expires=' + now + ';path=\/; Secure; SameSite=Lax;';\n    }\n    var addEvent = function(element, event, func) {\n        if (element.addEventListener) {\n            element.addEventListener(event, func);\n        } else {\n            var oldFunc = element['on' + event];\n            element['on' + event] = function() {\n                oldFunc.apply(this, arguments);\n                func.apply(this, arguments);\n            };\n        }\n    }\n    var _removed = false;\n        var form_to_submit = document.getElementById('_form_311_');\n    var allInputs = form_to_submit.querySelectorAll('input, select, textarea'), tooltips = [], submitted = false;\n\n    var getUrlParam = function(name) {\n        if (name.toLowerCase() !== 'email') {\n            var params = new URLSearchParams(window.location.search);\n            return params.get(name) || false;\n        }\n        \/\/ email is a special case because a plus is valid in the email address\n        var qString = window.location.search;\n        if (!qString) {\n            return false;\n        }\n        var parameters = qString.substr(1).split('&');\n        for (var i = 0; i < parameters.length; i++) {\n            var parameter = parameters[i].split('=');\n            if (parameter[0].toLowerCase() === 'email') {\n                return parameter[1] === undefined ? true : decodeURIComponent(parameter[1]);\n            }\n        }\n        return false;\n    };\n\n    var acctDateFormat = \"%d\/%m\/%Y\";\n    var getNormalizedDate = function(date, acctFormat) {\n        var decodedDate = decodeURIComponent(date);\n        if (acctFormat && acctFormat.match(\/(%d|%e).*%m\/gi) !== null) {\n            return decodedDate.replace(\/(\\d{2}).*(\\d{2}).*(\\d{4})\/g, '$3-$2-$1');\n        } else if (Date.parse(decodedDate)) {\n            var dateObj = new Date(decodedDate);\n            var year = dateObj.getFullYear();\n            var month = dateObj.getMonth() + 1;\n            var day = dateObj.getDate();\n            return `${year}-${month < 10 ? `0${month}` : month}-${day < 10 ? `0${day}` : day}`;\n        }\n        return false;\n    };\n\n    var getNormalizedTime = function(time) {\n        var hour, minutes;\n        var decodedTime = decodeURIComponent(time);\n        var timeParts = Array.from(decodedTime.matchAll(\/(\\d{1,2}):(\\d{1,2})\\W*([AaPp][Mm])?\/gm))[0];\n        if (timeParts[3]) { \/\/ 12 hour format\n            var isPM = timeParts[3].toLowerCase() === 'pm';\n            if (isPM) {\n                hour = parseInt(timeParts[1]) === 12 ? '12' : `${parseInt(timeParts[1]) + 12}`;\n            } else {\n                hour = parseInt(timeParts[1]) === 12 ? '0' : timeParts[1];\n            }\n        } else { \/\/ 24 hour format\n            hour = timeParts[1];\n        }\n        var normalizedHour = parseInt(hour) < 10 ? `0${parseInt(hour)}` : hour;\n        var minutes = timeParts[2];\n        return `${normalizedHour}:${minutes}`;\n    };\n\n    for (var i = 0; i < allInputs.length; i++) {\n        var regexStr = \"field\\\\[(\\\\d+)\\\\]\";\n        var results = new RegExp(regexStr).exec(allInputs[i].name);\n        if (results != undefined) {\n            allInputs[i].dataset.name = allInputs[i].name.match(\/\\[time\\]$\/)\n                ? `${window.cfields[results[1]]}_time`\n                : window.cfields[results[1]];\n        } else {\n            allInputs[i].dataset.name = allInputs[i].name;\n        }\n        var fieldVal = getUrlParam(allInputs[i].dataset.name);\n\n        if (fieldVal) {\n            if (allInputs[i].dataset.autofill === \"false\") {\n                continue;\n            }\n            if (allInputs[i].type == \"radio\" || allInputs[i].type == \"checkbox\") {\n                if (allInputs[i].value == fieldVal) {\n                    allInputs[i].checked = true;\n                }\n            } else if (allInputs[i].type == \"date\") {\n                allInputs[i].value = getNormalizedDate(fieldVal, acctDateFormat);\n            } else if (allInputs[i].type == \"time\") {\n                allInputs[i].value = getNormalizedTime(fieldVal);\n            } else {\n                allInputs[i].value = fieldVal;\n            }\n        }\n    }\n\n    var remove_tooltips = function() {\n        for (var i = 0; i < tooltips.length; i++) {\n            tooltips[i].tip.parentNode.removeChild(tooltips[i].tip);\n        }\n        tooltips = [];\n    };\n    var remove_tooltip = function(elem) {\n        for (var i = 0; i < tooltips.length; i++) {\n            if (tooltips[i].elem === elem) {\n                tooltips[i].tip.parentNode.removeChild(tooltips[i].tip);\n                tooltips.splice(i, 1);\n                return;\n            }\n        }\n    };\n    var create_tooltip = function(elem, text) {\n        var tooltip = document.createElement('div'),\n            arrow = document.createElement('div'),\n            inner = document.createElement('div'), new_tooltip = {};\n        if (elem.type != 'radio' && (elem.type != 'checkbox' || elem.name === 'sms_consent')) {\n            tooltip.className = '_error';\n            arrow.className = '_error-arrow';\n            inner.className = '_error-inner';\n            inner.innerHTML = text;\n            tooltip.appendChild(arrow);\n            tooltip.appendChild(inner);\n            elem.parentNode.appendChild(tooltip);\n        } else {\n            tooltip.className = '_error-inner _no_arrow';\n            tooltip.innerHTML = text;\n            elem.parentNode.insertBefore(tooltip, elem);\n            new_tooltip.no_arrow = true;\n        }\n        new_tooltip.tip = tooltip;\n        new_tooltip.elem = elem;\n        tooltips.push(new_tooltip);\n        return new_tooltip;\n    };\n    var resize_tooltip = function(tooltip) {\n        var rect = tooltip.elem.getBoundingClientRect();\n        var doc = document.documentElement,\n            scrollPosition = rect.top - ((window.pageYOffset || doc.scrollTop)  - (doc.clientTop || 0));\n        if (scrollPosition < 40) {\n            tooltip.tip.className = tooltip.tip.className.replace(\/ ?(_above|_below) ?\/g, '') + ' _below';\n        } else {\n            tooltip.tip.className = tooltip.tip.className.replace(\/ ?(_above|_below) ?\/g, '') + ' _above';\n        }\n    };\n    var resize_tooltips = function() {\n        if (_removed) return;\n        for (var i = 0; i < tooltips.length; i++) {\n            if (!tooltips[i].no_arrow) resize_tooltip(tooltips[i]);\n        }\n    };\n    var validate_field = function(elem, remove) {\n        var tooltip = null, value = elem.value, no_error = true;\n        remove ? remove_tooltip(elem) : false;\n        if (elem.type != 'checkbox') elem.className = elem.className.replace(\/ ?_has_error ?\/g, '');\n        if (elem.getAttribute('required') !== null) {\n            if (elem.type == 'radio' || (elem.type == 'checkbox' && \/any\/.test(elem.className))) {\n                var elems = form_to_submit.elements[elem.name];\n                if (!(elems instanceof NodeList || elems instanceof HTMLCollection) || elems.length <= 1) {\n                    no_error = elem.checked;\n                }\n                else {\n                    no_error = false;\n                    for (var i = 0; i < elems.length; i++) {\n                        if (elems[i].checked) no_error = true;\n                    }\n                }\n                if (!no_error) {\n                    tooltip = create_tooltip(elem, \"Seleccione una opci\u00f3n.\");\n                }\n            } else if (elem.type =='checkbox') {\n                var elems = form_to_submit.elements[elem.name], found = false, err = [];\n                no_error = true;\n                for (var i = 0; i < elems.length; i++) {\n                    if (elems[i].getAttribute('required') === null) continue;\n                    if (!found && elems[i] !== elem) return true;\n                    found = true;\n                    elems[i].className = elems[i].className.replace(\/ ?_has_error ?\/g, '');\n                    if (!elems[i].checked) {\n                        no_error = false;\n                        elems[i].className = elems[i].className + ' _has_error';\n                        err.push(\"Es necesario verificar %s\".replace(\"%s\", elems[i].value));\n                    }\n                }\n                if (!no_error) {\n                    tooltip = create_tooltip(elem, err.join('<br\/>'));\n                }\n            } else if (elem.tagName == 'SELECT') {\n                var selected = true;\n                if (elem.multiple) {\n                    selected = false;\n                    for (var i = 0; i < elem.options.length; i++) {\n                        if (elem.options[i].selected) {\n                            selected = true;\n                            break;\n                        }\n                    }\n                } else {\n                    for (var i = 0; i < elem.options.length; i++) {\n                        if (elem.options[i].selected\n                            && (!elem.options[i].value\n                            || (elem.options[i].value.match(\/\\n\/g)))\n                        ) {\n                            selected = false;\n                        }\n                    }\n                }\n                if (!selected) {\n                    elem.className = elem.className + ' _has_error';\n                    no_error = false;\n                    tooltip = create_tooltip(elem, \"Seleccione una opci\u00f3n.\");\n                }\n            } else if (value === undefined || value === null || value === '') {\n                elem.className = elem.className + ' _has_error';\n                no_error = false;\n                tooltip = create_tooltip(elem, \"Este campo es obligatorio.\");\n            }\n        }\n        if (no_error && elem.name == 'email') {\n            if (!value.match(\/^[\\+_a-z0-9-'&=]+(\\.[\\+_a-z0-9-']+)*@[a-z0-9-]+(\\.[a-z0-9-]+)*(\\.[a-z]{2,})$\/i)) {\n                elem.className = elem.className + ' _has_error';\n                no_error = false;\n                tooltip = create_tooltip(elem, \"Introduzca una direcci\u00f3n de correo electr\u00f3nico v\u00e1lida.\");\n            }\n        }\n        if (no_error && (elem.id == 'phone')) {\n            if (elem.value.trim() && typeof iti != 'undefined' && !iti.isValidNumber()) {\n                elem.className = elem.className + ' _has_error';\n                no_error = false;\n                tooltip = create_tooltip(elem, \"Ingresa un n\u00famero de tel\u00e9fono v\u00e1lido.\");\n            }\n        }\n        if (no_error && \/date_field\/.test(elem.className)) {\n            if (!value.match(\/^\\d\\d\\d\\d-\\d\\d-\\d\\d$\/)) {\n                elem.className = elem.className + ' _has_error';\n                no_error = false;\n                tooltip = create_tooltip(elem, \"Introduzca una fecha v\u00e1lida.\");\n            }\n        }\n\n        if (no_error && elem.name === 'sms_consent') {\n            const elemShouldBeChecked = (!!elem.attributes.required && !elem.checked);\n            if (elemShouldBeChecked) {\n                elem.className = elem.className + ' _has_error';\n                no_error = false;\n                tooltip = create_tooltip(elem, \"Marca esta casilla para continuar\");\n            } else {\n                elem.className = elem.className.replace(\/ ?_has_error ?\/g, '');\n            }\n        }\n        tooltip ? resize_tooltip(tooltip) : false;\n        return no_error;\n    };\n    var needs_validate = function(el) {\n        if(el.getAttribute('required') !== null){\n            return true;\n        }\n        if((el.name === 'email' || el.id === 'phone') && el.value !== \"\"){\n            return true;\n        }\n\n        return false;\n    };\n    var validate_form = function(e) {\n        var err = form_to_submit.querySelector('._form_error'), no_error = true;\n        if (!submitted) {\n            submitted = true;\n            for (var i = 0, len = allInputs.length; i < len; i++) {\n                var input = allInputs[i];\n                if (needs_validate(input)) {\n                    if (input.type == 'text' || input.type == 'number' || input.type == 'time' || input.type == 'tel') {\n                        addEvent(input, 'blur', function() {\n                            this.value = this.value.trim();\n                            validate_field(this, true);\n                        });\n                        addEvent(input, 'input', function() {\n                            validate_field(this, true);\n                        });\n                    } else if (input.type == 'radio' || input.type == 'checkbox') {\n                        (function(el) {\n                            function getElementsArray(name){\n                                const value =  form_to_submit.elements[name];\n                                if (Array.isArray(value)){\n                                    return value;\n                                }\n                                return [value];\n                            }\n                            var radios = getElementsArray(el.name);\n                            for (var i = 0; i < radios.length; i++) {\n                                addEvent(radios[i], 'change', function() {\n                                    validate_field(el, true);\n                                });\n                            }\n                        })(input);\n                    } else if (input.tagName == 'SELECT') {\n                        addEvent(input, 'change', function() {\n                            validate_field(this, true);\n                        });\n                    } else if (input.type == 'textarea'){\n                        addEvent(input, 'input', function() {\n                            validate_field(this, true);\n                        });\n                    }\n                }\n            }\n        }\n        remove_tooltips();\n        for (var i = 0, len = allInputs.length; i < len; i++) {\n            var elem = allInputs[i];\n            if (needs_validate(elem)) {\n                if (elem.tagName.toLowerCase() !== \"select\") {\n                    elem.value = elem.value.trim();\n                }\n                validate_field(elem) ? true : no_error = false;\n            }\n        }\n        if (!no_error && e) {\n            e.preventDefault();\n        }\n        resize_tooltips();\n        return no_error;\n    };\n    addEvent(window, 'resize', resize_tooltips);\n    addEvent(window, 'scroll', resize_tooltips);\n\n    window['recaptcha_callback'] = function() {\n  \/\/ Get all recaptchas in the DOM (there may be more than one form on the page).\n  var recaptchas = document.getElementsByClassName(\"g-recaptcha\");\n  for (var i in recaptchas) {\n    \/\/ Set the recaptcha element ID, so the recaptcha can be applied to each element.\n    var recaptcha_id = \"recaptcha_\" + i;\n    recaptchas[i].id = recaptcha_id;\n    var el = document.getElementById(recaptcha_id);\n    if (el != null) {\n      var sitekey = el.getAttribute(\"data-sitekey\");\n      var stoken = el.getAttribute(\"data-stoken\");\n      grecaptcha.render(recaptcha_id, {\"sitekey\":sitekey,\"stoken\":stoken});\n    }\n  }\n};    _load_script(\"https:\/\/www.google.com\/recaptcha\/api.js?onload=recaptcha_callback&render=explicit\");\n    var _form_serialize = function(form){if(!form||form.nodeName!==\"FORM\"){return }var i,j,q=[];for(i=0;i<form.elements.length;i++){if(form.elements[i].name===\"\"){continue}switch(form.elements[i].nodeName){case\"INPUT\":switch(form.elements[i].type){case\"tel\":q.push(form.elements[i].name+\"=\"+encodeURIComponent(form.elements[i].previousSibling.querySelector('div.iti__selected-dial-code').innerText)+encodeURIComponent(\" \")+encodeURIComponent(form.elements[i].value));break;case\"text\":case\"number\":case\"date\":case\"time\":case\"hidden\":case\"password\":case\"button\":case\"reset\":case\"submit\":q.push(form.elements[i].name+\"=\"+encodeURIComponent(form.elements[i].value));break;case\"checkbox\":case\"radio\":if(form.elements[i].checked){q.push(form.elements[i].name+\"=\"+encodeURIComponent(form.elements[i].value))}break;case\"file\":break}break;case\"TEXTAREA\":q.push(form.elements[i].name+\"=\"+encodeURIComponent(form.elements[i].value));break;case\"SELECT\":switch(form.elements[i].type){case\"select-one\":q.push(form.elements[i].name+\"=\"+encodeURIComponent(form.elements[i].value));break;case\"select-multiple\":for(j=0;j<form.elements[i].options.length;j++){if(form.elements[i].options[j].selected){q.push(form.elements[i].name+\"=\"+encodeURIComponent(form.elements[i].options[j].value))}}break}break;case\"BUTTON\":switch(form.elements[i].type){case\"reset\":case\"submit\":case\"button\":q.push(form.elements[i].name+\"=\"+encodeURIComponent(form.elements[i].value));break}break}}return q.join(\"&\")};\n\n    const formSupportsPost = false;\n    var form_submit = function(e) {\n\n        e.preventDefault();\n        if (validate_form()) {\n            if(form_to_submit.querySelector('input[name=\"phone\"]') && typeof iti != 'undefined') {\n                form_to_submit.querySelector('input[name=\"phone\"]').value = iti.getNumber();\n            }\n            \/\/ use this trick to get the submit button & disable it using plain javascript\n            var submitButton = e.target.querySelector('#_form_311_submit');\n            submitButton.disabled = true;\n            submitButton.classList.add('processing');\n                    var serialized = _form_serialize(document.getElementById('_form_311_')).replace(\/%0A\/g, '\\\\n');\n            var err = form_to_submit.querySelector('._form_error');\n            err ? err.parentNode.removeChild(err) : false;\n            async function submitForm() {\n                var formData = new FormData();\n                const searchParams = new URLSearchParams(serialized);\n                searchParams.forEach((value, key) => {\n                    if (key !== 'hideButton') {\n                        formData.append(key, value);\n                    }\n                });\n                let request = {\n                    headers: {\n                        \"Accept\": \"application\/json\"\n                    },\n                    body: formData,\n                    method: \"POST\"\n                };\n\n                let pageUrlParams = new URLSearchParams(window.location.search);\n                if (pageUrlParams.has('t')) {\n                    request.headers.Authorization = 'Bearer ' + pageUrlParams.get('t');\n                }\n                const response = await fetch('https:\/\/deandelafuenteromero.activehosted.com\/proc.php?jsonp=true', request);\n\n                return response.json();\n            }\n            if (formSupportsPost) {\n                submitForm().then((data) => {\n                    eval(data.js);\n                }).catch(() => {\n                    _show_error(\"311\", \"Lo sentimos, ocurri\u00f3 un error con el env\u00edo. Vuelve a intentarlo.\");\n                });\n            } else {\n                _load_script('https:\/\/deandelafuenteromero.activehosted.com\/proc.php?' + serialized + '&jsonp=true', null, true);\n            }\n        }\n        return false;\n    };\n    addEvent(form_to_submit, 'submit', form_submit);\n})();\n\n<\/script><\/div><\/div>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"step4\">Step 4: Validate the structured data<\/h3>\n\n\n\n<p>Before finishing, I recommend checking <strong>if the structured data has been implemented correctly<\/strong>.<\/p>\n\n\n\n<p>To do this, you can go <strong>for free<\/strong> to Google&#8217;s <a href=\"https:\/\/search.google.com\/test\/rich-results\" target=\"_blank\" rel=\"noreferrer noopener\">Rich Results Test<\/a> and enter the URL of the page or post where you inserted the code snippet.<\/p>\n\n\n\n<p>If everything went well, it should look something like this once you analyze the URL:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"507\" src=\"https:\/\/dinorank.com\/en-us\/blog-seo\/wp-content\/uploads\/2024\/08\/Google-Rich-Results-Test-to-Validate-Structured-Data-1024x507.png\" alt=\"Google Rich Results Test to Validate Structured Data\" class=\"wp-image-21639\" title=\"Google Rich Results Test to Validate Structured Data\" srcset=\"https:\/\/dinorank.com\/en-us\/blog-seo\/wp-content\/uploads\/2024\/08\/Google-Rich-Results-Test-to-Validate-Structured-Data-1024x507.png 1024w, https:\/\/dinorank.com\/en-us\/blog-seo\/wp-content\/uploads\/2024\/08\/Google-Rich-Results-Test-to-Validate-Structured-Data-300x148.png 300w, https:\/\/dinorank.com\/en-us\/blog-seo\/wp-content\/uploads\/2024\/08\/Google-Rich-Results-Test-to-Validate-Structured-Data-768x380.png 768w, https:\/\/dinorank.com\/en-us\/blog-seo\/wp-content\/uploads\/2024\/08\/Google-Rich-Results-Test-to-Validate-Structured-Data-1536x760.png 1536w, https:\/\/dinorank.com\/en-us\/blog-seo\/wp-content\/uploads\/2024\/08\/Google-Rich-Results-Test-to-Validate-Structured-Data.png 1790w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n<p>As you can see, it detects a valid element, in this case a &#8220;<strong>news article<\/strong>&#8220;, which is the one I&#8217;ve inserted in this example.<\/p>\n\n\n\n<p>If you don&#8217;t see something similar, it might be due to a configuration error in the snippet or the code itself, so it&#8217;s advisable to review it again.<\/p>\n\n\n\n<p><strong>Below are several examples of the most common and useful structured data for SEO.<\/strong><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">How to Generate Different Types of Structured Data<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"#articles\">Articles<\/a><\/li>\n\n\n\n<li><a href=\"#products\">Products<\/a><\/li>\n\n\n\n<li><a href=\"#events\">Events<\/a><\/li>\n\n\n\n<li><a href=\"#recipes\">Recipes<\/a><\/li>\n\n\n\n<li><a href=\"#reviews\">Reviews<\/a><\/li>\n\n\n\n<li><a href=\"#faq\">Frequently Asked Questions<\/a><\/li>\n<\/ul>\n\n\n\n<p>To give you an idea of the variety of structured data that exist, <a href=\"https:\/\/schema.org\/docs\/full.html\" target=\"_blank\" rel=\"noreferrer noopener\">Schema.org<\/a> has over 800 types of entities and specific objects in its vocabulary.<\/p>\n\n\n\n<p>If you don&#8217;t have knowledge of JSON-LD code, you can generate it with the help of the free version of ChatGPT.<\/p>\n\n\n\n<p>Here&#8217;s how:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"articles\">1. Articles<\/h3>\n\n\n\n<p>Article structured data is used to <strong>mark editorial content<\/strong>, such as news and blogs.<\/p>\n\n\n\n<p>In this case, the most common classes would be:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong><code>Article<\/code><\/strong>: For general editorial content.<\/li>\n\n\n\n<li><strong><code>NewsArticle<\/code><\/strong>: For news.<\/li>\n\n\n\n<li><strong><code>BlogPosting<\/code><\/strong>: For blog posts.<\/li>\n\n\n\n<li><strong><code>Report<\/code><\/strong>: For reports.<\/li>\n\n\n\n<li><strong><code>HowTo<\/code><\/strong>: If your article has step-by-step instructions, this class will help those steps appear in the search results.<\/li>\n<\/ul>\n\n\n\n<p>For example, here&#8217;s how a search with the <strong><code>Article<\/code><\/strong> class would look like:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"808\" src=\"https:\/\/dinorank.com\/en-us\/blog-seo\/wp-content\/uploads\/2024\/08\/Example-of-Article-Structured-Data-1024x808.png\" alt=\"\" class=\"wp-image-21642\" title=\"Example of Article Structured Data\" srcset=\"https:\/\/dinorank.com\/en-us\/blog-seo\/wp-content\/uploads\/2024\/08\/Example-of-Article-Structured-Data-1024x808.png 1024w, https:\/\/dinorank.com\/en-us\/blog-seo\/wp-content\/uploads\/2024\/08\/Example-of-Article-Structured-Data-300x237.png 300w, https:\/\/dinorank.com\/en-us\/blog-seo\/wp-content\/uploads\/2024\/08\/Example-of-Article-Structured-Data-768x606.png 768w, https:\/\/dinorank.com\/en-us\/blog-seo\/wp-content\/uploads\/2024\/08\/Example-of-Article-Structured-Data.png 1118w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n<p><\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Example of How to Generate Article Structured Data with ChatGPT<\/h4>\n\n\n\n<p>If your content is an article, you can ask ChatGPT with the following prompt, replacing the values with those of your specific article:<\/p>\n\n\n\n<p><strong>Prompt<\/strong> Generate a JSON-LD code for structured data of an article titled &#8220;Benefits of Daily Exercise&#8221;. The details are as follows: &#8211; Author: Maria Lopez &#8211; Publication Date: 2024-06-24 &#8211; Image: https:\/\/example.com\/images\/exercise.jpg &#8211; Description: An article detailing the physical and mental benefits of daily exercise. &#8211; Published by: Healthy Magazine<\/p>\n\n\n\n<p>The AI will respond with the JSON-LD formatted code for you to simply integrate into your web page:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1022\" height=\"645\" src=\"https:\/\/dinorank.com\/en-us\/blog-seo\/wp-content\/uploads\/2024\/08\/How-to-Generate-Structured-Data-for-Articles-with-ChatGPT.png\" alt=\"\" class=\"wp-image-21644\" title=\"How to Generate Structured Data for Articles with ChatGPT\" srcset=\"https:\/\/dinorank.com\/en-us\/blog-seo\/wp-content\/uploads\/2024\/08\/How-to-Generate-Structured-Data-for-Articles-with-ChatGPT.png 1022w, https:\/\/dinorank.com\/en-us\/blog-seo\/wp-content\/uploads\/2024\/08\/How-to-Generate-Structured-Data-for-Articles-with-ChatGPT-300x189.png 300w, https:\/\/dinorank.com\/en-us\/blog-seo\/wp-content\/uploads\/2024\/08\/How-to-Generate-Structured-Data-for-Articles-with-ChatGPT-768x485.png 768w\" sizes=\"(max-width: 1022px) 100vw, 1022px\" \/><\/figure><\/div>\n\n\n<p>Here is the generated code. Copy it and replace the sample values with those of your article:<\/p>\n\n\n\n<p>&lt;script type=&#8221;application\/ld+json&#8221;&gt; { &#8220;@context&#8221;: &#8220;https:\/\/schema.org&#8221;, &#8220;@type&#8221;: &#8220;Article&#8221;, &#8220;headline&#8221;: &#8220;Benefits of Daily Exercise&#8221;, &#8220;author&#8221;: { &#8220;@type&#8221;: &#8220;Person&#8221;, &#8220;name&#8221;: &#8220;Maria Lopez&#8221; }, &#8220;datePublished&#8221;: &#8220;2024-06-24&#8221;, &#8220;image&#8221;: &#8220;https:\/\/example.com\/images\/exercise.jpg&#8221;, &#8220;publisher&#8221;: { &#8220;@type&#8221;: &#8220;Organization&#8221;, &#8220;name&#8221;: &#8220;Healthy Magazine&#8221;, &#8220;logo&#8221;: { &#8220;@type&#8221;: &#8220;ImageObject&#8221;, &#8220;url&#8221;: &#8220;https:\/\/example.com\/logo.png&#8221; } }, &#8220;description&#8221;: &#8220;An article detailing the physical and mental benefits of daily exercise.&#8221; } &lt;\/script&gt;<\/p>\n\n\n\n<p>Another positive aspect of this method is that ChatGPT will include the classes that fit your article, so you can get different structured data and rich results.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"products\">2. Products<\/h3>\n\n\n\n<p>For products, structured data is used to provide information about them, such as their <strong>price<\/strong> or <strong>availability<\/strong>.<\/p>\n\n\n\n<p>The most commonly used product class is:<\/p>\n\n\n\n<p><strong>Product<\/strong>: For general products.<\/p>\n\n\n\n<p>If you search for &#8220;iPhone 15 Pro&#8221; on Google, you&#8217;ll see several results with a structure similar to this:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"783\" height=\"211\" src=\"https:\/\/dinorank.com\/en-us\/blog-seo\/wp-content\/uploads\/2024\/08\/Example-of-product-structured-data.png\" alt=\"Example of product structured data\" class=\"wp-image-21647\" title=\"Example of product structured data\" srcset=\"https:\/\/dinorank.com\/en-us\/blog-seo\/wp-content\/uploads\/2024\/08\/Example-of-product-structured-data.png 783w, https:\/\/dinorank.com\/en-us\/blog-seo\/wp-content\/uploads\/2024\/08\/Example-of-product-structured-data-300x81.png 300w, https:\/\/dinorank.com\/en-us\/blog-seo\/wp-content\/uploads\/2024\/08\/Example-of-product-structured-data-768x207.png 768w\" sizes=\"(max-width: 783px) 100vw, 783px\" \/><\/figure><\/div>\n\n\n<p>This case is a clear example of a good application of product Schema markup.<\/p>\n\n\n\n<p>Keep in mind that <strong>if you use WooCommerce<\/strong>, this command is likely added automatically.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Example of Product Structured Data Generated with ChatGPT<\/h4>\n\n\n\n<p>If you need to create product structured data, you can use this prompt, replacing it with your product page data:<\/p>\n\n\n\n<p><strong>Prompt<\/strong> Generate a JSON-LD code for structured data for a product called &#8220;Espresso Coffee Maker&#8221;. The details are as follows: &#8211; Description: High-quality espresso coffee maker with multiple functions and elegant design. &#8211; Image: https:\/\/example.com\/images\/coffeemaker.jpg &#8211; SKU: 12345 &#8211; Brand: ExampleBrand &#8211; Price: 199.99 USD &#8211; Availability: InStock &#8211; Rating: 4.5 out of 5 based on 24 reviews.<\/p>\n\n\n\n<p>And its code would be, in this case: &lt;script type=&#8221;application\/ld+json&#8221;&gt; { &#8220;@context&#8221;: &#8220;https:\/\/schema.org&#8221;, &#8220;@type&#8221;: &#8220;Product&#8221;, &#8220;name&#8221;: &#8220;Espresso Coffee Maker&#8221;, &#8220;image&#8221;: &#8220;https:\/\/example.com\/images\/coffeemaker.jpg&#8221;, &#8220;description&#8221;: &#8220;High-quality espresso coffee maker with multiple functions and elegant design.&#8221;, &#8220;sku&#8221;: &#8220;12345&#8221;, &#8220;brand&#8221;: { &#8220;@type&#8221;: &#8220;Brand&#8221;, &#8220;name&#8221;: &#8220;ExampleBrand&#8221; }, &#8220;offers&#8221;: { &#8220;@type&#8221;: &#8220;Offer&#8221;, &#8220;priceCurrency&#8221;: &#8220;USD&#8221;, &#8220;price&#8221;: &#8220;199.99&#8221;, &#8220;availability&#8221;: &#8220;https:\/\/schema.org\/InStock&#8221; }, &#8220;aggregateRating&#8221;: { &#8220;@type&#8221;: &#8220;AggregateRating&#8221;, &#8220;ratingValue&#8221;: &#8220;4.5&#8221;, &#8220;reviewCount&#8221;: &#8220;24&#8221; } } &lt;\/script&gt;<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"events\">3. Events<\/h3>\n\n\n\n<p>If you want to include details about an event, such as its <strong>date<\/strong>, <strong>location<\/strong>, and <strong>description<\/strong>, you can use <strong>event structured data<\/strong>.<\/p>\n\n\n\n<p>Depending on the type of event, you can apply different classes:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code><strong>Event<\/strong><\/code>: For general events.<\/li>\n\n\n\n<li><strong><code>BusinessEvent<\/code><\/strong>: For business events.<\/li>\n\n\n\n<li><strong><code>ChildrensEvent<\/code><\/strong>: For children&#8217;s events.<\/li>\n\n\n\n<li><strong><code>ComedyEvent<\/code><\/strong>: For comedy events.<\/li>\n\n\n\n<li><strong><code>CourseInstance<\/code><\/strong>: For courses.<\/li>\n\n\n\n<li><strong><code>DanceEvent<\/code><\/strong>: For dance events.<\/li>\n\n\n\n<li><strong><code>EducationEvent<\/code><\/strong>: For educational events.<\/li>\n\n\n\n<li><strong><code>ExhibitionEvent<\/code><\/strong>: For exhibitions.<\/li>\n\n\n\n<li><strong><code>Festival<\/code><\/strong>: For festivals.<\/li>\n\n\n\n<li><strong><code>FoodEvent<\/code><\/strong>: For food events.<\/li>\n\n\n\n<li><strong><code>LiteraryEvent<\/code><\/strong>: For literary events.<\/li>\n\n\n\n<li><strong><code>MusicEvent<\/code><\/strong>: For music events.<\/li>\n\n\n\n<li><strong><code>SaleEvent<\/code><\/strong>: For sales events.<\/li>\n\n\n\n<li><strong><code>SocialEvent<\/code><\/strong>: For social events.<\/li>\n\n\n\n<li><strong><code>SportsEvent<\/code><\/strong>: For sports events.<\/li>\n\n\n\n<li><strong><code>TheaterEvent<\/code><\/strong>: For theater events.<\/li>\n<\/ul>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"756\" src=\"https:\/\/dinorank.com\/en-us\/blog-seo\/wp-content\/uploads\/2024\/08\/Example-of-event-structured-data-1024x756.png\" alt=\"Example of event structured data\" class=\"wp-image-21649\" title=\"Example of event structured data\" srcset=\"https:\/\/dinorank.com\/en-us\/blog-seo\/wp-content\/uploads\/2024\/08\/Example-of-event-structured-data-1024x756.png 1024w, https:\/\/dinorank.com\/en-us\/blog-seo\/wp-content\/uploads\/2024\/08\/Example-of-event-structured-data-300x222.png 300w, https:\/\/dinorank.com\/en-us\/blog-seo\/wp-content\/uploads\/2024\/08\/Example-of-event-structured-data-768x567.png 768w, https:\/\/dinorank.com\/en-us\/blog-seo\/wp-content\/uploads\/2024\/08\/Example-of-event-structured-data.png 1093w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n<p>An example of event structured data is a Google search for &#8220;music festival in Barcelona&#8221;:<\/p>\n\n\n\n<p>In this case, it&#8217;s likely that these URLs achieved the rich result thanks to the correct implementation of the <strong><code>MusicEvent<\/code><\/strong> structured data, allowing Google to better understand the page&#8217;s context.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Use this ChatGPT prompt example to generate event structured data:<\/h4>\n\n\n\n<p><strong>Prompt<\/strong> Generate a JSON-LD code for structured data for an event called &#8220;Rock Concert&#8221;. The details are as follows: &#8211; Date: December 1, 2024, 7:30 PM &#8211; Location: National Stadium, 123 Fake Street, Example City &#8211; Description: A rock concert featuring the best local bands. &#8211; Image: https:\/\/example.com\/images\/concert.jpg &#8211; Price: 50.00 USD &#8211; Availability: InStock<\/p>\n\n\n\n<p>The code returned by the AI is as follows: &lt;div itemscope itemtype=&#8221;https:\/\/schema.org\/Event&#8221;&gt; &lt;h1 itemprop=&#8221;name&#8221;&gt;Rock Concert&lt;\/h1&gt; &lt;p&gt;Date: &lt;time itemprop=&#8221;startDate&#8221; datetime=&#8221;2024-12-01T19:30&#8243;&gt;December 1, 2024, 7:30 PM&lt;\/time&gt;&lt;\/p&gt; &lt;p itemprop=&#8221;location&#8221; itemscope itemtype=&#8221;https:\/\/schema.org\/Place&#8221;&gt; Location: &lt;span itemprop=&#8221;name&#8221;&gt;National Stadium&lt;\/span&gt; &lt;span itemprop=&#8221;address&#8221; itemscope itemtype=&#8221;https:\/\/schema.org\/PostalAddress&#8221;&gt; &lt;span itemprop=&#8221;streetAddress&#8221;&gt;123 Fake Street&lt;\/span&gt; &lt;span itemprop=&#8221;addressLocality&#8221;&gt;Example City&lt;\/span&gt; &lt;span itemprop=&#8221;addressRegion&#8221;&gt;Example State&lt;\/span&gt; &lt;span itemprop=&#8221;postalCode&#8221;&gt;12345&lt;\/span&gt; &lt;span itemprop=&#8221;addressCountry&#8221;&gt;US&lt;\/span&gt; &lt;\/span&gt; &lt;\/p&gt; &lt;\/div&gt;<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"recipes\">4. Recipes<\/h3>\n\n\n\n<p>This markup is used to detail <strong>ingredients<\/strong>, <strong>preparation times<\/strong>, and more for any type of food recipe.<\/p>\n\n\n\n<p>In this case, the most commonly used classes are:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong><code>Recipe<\/code><\/strong>: To describe a cooking recipe. Provides search engines with detailed information about the recipe, such as ingredients, preparation time, cooking time, instructions, etc.<\/li>\n\n\n\n<li><strong><code>HowToStep<\/code><\/strong>: Used to describe each individual step in the recipe preparation process.<\/li>\n\n\n\n<li><strong><code>HowToSection<\/code><\/strong>: Groups several steps of a recipe into logical sections, such as washing, cutting, cooking&#8230;<\/li>\n\n\n\n<li><strong><code>NutritionInformation<\/code><\/strong>: Provides nutritional details about the recipe, such as calories, fats, proteins, etc.<\/li>\n<\/ul>\n\n\n\n<p>An example of correct application of recipe structured data are the following pages:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"590\" src=\"https:\/\/dinorank.com\/en-us\/blog-seo\/wp-content\/uploads\/2024\/08\/Example-of-recipe-structured-data-1024x590.png\" alt=\"\" class=\"wp-image-21651\" title=\"Example of recipe structured data\" srcset=\"https:\/\/dinorank.com\/en-us\/blog-seo\/wp-content\/uploads\/2024\/08\/Example-of-recipe-structured-data-1024x590.png 1024w, https:\/\/dinorank.com\/en-us\/blog-seo\/wp-content\/uploads\/2024\/08\/Example-of-recipe-structured-data-300x173.png 300w, https:\/\/dinorank.com\/en-us\/blog-seo\/wp-content\/uploads\/2024\/08\/Example-of-recipe-structured-data-768x442.png 768w, https:\/\/dinorank.com\/en-us\/blog-seo\/wp-content\/uploads\/2024\/08\/Example-of-recipe-structured-data.png 1132w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n<p>The SEOs of these 3 pages have successfully implemented the <strong><code>Recipe<\/code><\/strong> and <strong><code>NutritionInformation<\/code><\/strong> classes.<\/p>\n\n\n\n<p>Thanks to this, Google was able to understand that their content is about &#8220;spaghetti carbonara&#8221; recipes and that they are also low in fat.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Example of Recipe or <em>Recipe<\/em> Structured Data<\/h4>\n\n\n\n<p>If you want to achieve something similar with your content, you can write this message to ChatGPT specifying your business data:<\/p>\n\n\n\n<p><strong>Prompt<\/strong> Generate a JSON-LD code for structured data for a recipe called &#8220;Paella&#8221;. The details are as follows: &#8211; Description: Step-by-step guide to making a delicious paella. &#8211; Ingredients: 2 cups of rice, 500g of seafood, 1 whole chicken. &#8211; Steps: 1. Prepare the ingredients. 2. Cook the seafood and chicken. 3. Add the rice and broth. 4. Simmer. 5. Serve and enjoy. &#8211; Preparation time: 20 minutes. &#8211; Cooking time: 40 minutes. &#8211; Calories: 500 kcal per serving.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Whose code you can copy and paste, replacing it with your data, is this:<\/h4>\n\n\n\n<p>&lt;script type=&#8221;application\/ld+json&#8221;&gt; { &#8220;@context&#8221;: &#8220;https:\/\/schema.org&#8221;, &#8220;@type&#8221;: &#8220;HowTo&#8221;, &#8220;name&#8221;: &#8220;How to Make Paella&#8221;, &#8220;description&#8221;: &#8220;Step-by-step guide to making a delicious paella.&#8221;, &#8220;step&#8221;: [ { &#8220;@type&#8221;: &#8220;HowToStep&#8221;, &#8220;name&#8221;: &#8220;Step 1: Prepare the Ingredients&#8221;, &#8220;text&#8221;: &#8220;Gather all the necessary ingredients: rice, seafood, chicken, saffron, etc.&#8221; }, { &#8220;@type&#8221;: &#8220;HowToStep&#8221;, &#8220;name&#8221;: &#8220;Step 2: Cook the Seafood and Chicken&#8221;, &#8220;text&#8221;: &#8220;In a paella pan, cook the seafood and chicken until golden brown.&#8221; }, { &#8220;@type&#8221;: &#8220;HowToStep&#8221;, &#8220;name&#8221;: &#8220;Step 3: Add the Rice and Broth&#8221;, &#8220;text&#8221;: &#8220;Add the rice and broth, and let it simmer.&#8221; }, { &#8220;@type&#8221;: &#8220;HowToStep&#8221;, &#8220;name&#8221;: &#8220;Step 4: Simmer&#8221;, &#8220;text&#8221;: &#8220;Simmer for 20 minutes until the rice is tender.&#8221; }, { &#8220;@type&#8221;: &#8220;HowToStep&#8221;, &#8220;name&#8221;: &#8220;Step 5: Serve and Enjoy&#8221;, &#8220;text&#8221;: &#8220;Serve the paella hot and enjoy.&#8221; } ] } &lt;\/script&gt;<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"reviews\">5. Reviews<\/h3>\n\n\n\n<p>If you want to display <strong>user opinions about specific content on your website<\/strong> in search results, you can use review structured data.<\/p>\n\n\n\n<p>The most common are:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong><code>Review<\/code><\/strong>: Used to describe an evaluation or comment about a product, service, or entity.<\/li>\n\n\n\n<li><code><strong>AggregateRating<\/strong><\/code>: Used to provide an average rating based on multiple reviews.<\/li>\n\n\n\n<li><strong><code>Person<\/code><\/strong>: Used to describe the author of the review, which adds credibility, especially for <a href=\"https:\/\/dinorank.com\/en-us\/blog-seo\/what-is-the-eeat-and-how-to-work-with-it\/\" target=\"_blank\" rel=\"noreferrer noopener\">improving EEAT<\/a>.<\/li>\n\n\n\n<li><strong><code>Organization<\/code><\/strong>: If an organization publishes the review, this class allows you to indicate it to search engines.<\/li>\n<\/ul>\n\n\n\n<p>To show you what can be achieved with the correct application of structured review data, here is the following example:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"276\" src=\"https:\/\/dinorank.com\/en-us\/blog-seo\/wp-content\/uploads\/2024\/08\/Example-of-structured-review-data-1024x276.png\" alt=\"Example of structured review data\" class=\"wp-image-21654\" title=\"Example of structured review data\" srcset=\"https:\/\/dinorank.com\/en-us\/blog-seo\/wp-content\/uploads\/2024\/08\/Example-of-structured-review-data-1024x276.png 1024w, https:\/\/dinorank.com\/en-us\/blog-seo\/wp-content\/uploads\/2024\/08\/Example-of-structured-review-data-300x81.png 300w, https:\/\/dinorank.com\/en-us\/blog-seo\/wp-content\/uploads\/2024\/08\/Example-of-structured-review-data-768x207.png 768w, https:\/\/dinorank.com\/en-us\/blog-seo\/wp-content\/uploads\/2024\/08\/Example-of-structured-review-data.png 1101w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n<h4 class=\"wp-block-heading\">This is an example of how structured data for Reviews would look<\/h4>\n\n\n\n<p>To display reviews of some content in search results, you can use this ChatGPT prompt and apply it to your website:<\/p>\n\n\n\n<p><strong>Prompt<\/strong> Generate a JSON-LD code for structured data of a review of a product called &#8220;Espresso Coffee Maker&#8221;. The details are as follows: &#8211; Author: John Doe &#8211; Rating: 4 out of 5 stars &#8211; Review text: The coffee maker is excellent, makes delicious coffee, and is very easy to use. &#8211; Published by: Tech Magazine<\/p>\n\n\n\n<p>The respective code would be this: &lt;script type=&#8221;application\/ld+json&#8221;&gt; { &#8220;@context&#8221;: &#8220;https:\/\/schema.org&#8221;, &#8220;@type&#8221;: &#8220;Review&#8221;, &#8220;name&#8221;: &#8220;Espresso Coffee Maker Review&#8221;, &#8220;reviewRating&#8221;: { &#8220;@type&#8221;: &#8220;Rating&#8221;, &#8220;ratingValue&#8221;: &#8220;4&#8221;, &#8220;bestRating&#8221;: &#8220;5&#8221; }, &#8220;author&#8221;: { &#8220;@type&#8221;: &#8220;Person&#8221;, &#8220;name&#8221;: &#8220;John Doe&#8221; }, &#8220;reviewBody&#8221;: &#8220;The coffee maker is excellent, makes delicious coffee, and is very easy to use.&#8221;, &#8220;publisher&#8221;: { &#8220;@type&#8221;: &#8220;Organization&#8221;, &#8220;name&#8221;: &#8220;Tech Magazine&#8221; } } &lt;\/script&gt;<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"preguntas-frecuentes\">6. Frequently Asked Questions<\/h3>\n\n\n\n<p>If you address any frequently asked questions in your content, including this type of structured data will help increase your visibility and click-through rate. Additionally, you can be more effective in voice searches.<\/p>\n\n\n\n<p>The most common classes of structured data are:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong><code>FAQPage<\/code><\/strong>: Used to define a page that contains a list of frequently asked questions. This informs search engines that the page is structured as a series of questions and answers.<\/li>\n\n\n\n<li><strong><code>Question<\/code><\/strong>: Used to mark each individual question within the FAQ page. This allows search engines to understand what specific question is being answered.<\/li>\n\n\n\n<li><code><strong>Answer<\/strong><\/code>: Used to mark the corresponding answer to a specific question. This helps search engines correctly match questions with their answers in search results.<\/li>\n<\/ul>\n\n\n\n<p>By applying these different Schema markup types, you will have the chance to appear in the frequently asked questions section of search results, as shown here:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"781\" src=\"https:\/\/dinorank.com\/en-us\/blog-seo\/wp-content\/uploads\/2024\/08\/Example-of-structured-FAQ-data-1024x781.png\" alt=\"\" class=\"wp-image-21656\" title=\"Example of structured FAQ data\" srcset=\"https:\/\/dinorank.com\/en-us\/blog-seo\/wp-content\/uploads\/2024\/08\/Example-of-structured-FAQ-data-1024x781.png 1024w, https:\/\/dinorank.com\/en-us\/blog-seo\/wp-content\/uploads\/2024\/08\/Example-of-structured-FAQ-data-300x229.png 300w, https:\/\/dinorank.com\/en-us\/blog-seo\/wp-content\/uploads\/2024\/08\/Example-of-structured-FAQ-data-768x586.png 768w, https:\/\/dinorank.com\/en-us\/blog-seo\/wp-content\/uploads\/2024\/08\/Example-of-structured-FAQ-data.png 1122w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n<p>To generate the necessary code to display the FAQs of your website, you can ask ChatGPT with this prompt:<\/p>\n\n\n\n<p><strong>Prompt<\/strong> Generate a JSON-LD code for structured FAQ data about Example Coffee Shop. The questions and answers are as follows: 1. What are the opening hours of Example Coffee Shop? Answer: We are open Monday to Saturday from 8:00 AM to 10:00 PM. 2. Where is Example Coffee Shop located? Answer: We are located at 123 Fake Street, Example City. 3. Do you offer vegan options on your menu? Answer: Yes, we offer several vegan options on our menu, including salads, soups, and desserts.<\/p>\n\n\n\n<p>Once you have determined the JSON-LD code for the various structured data of your website, you just <strong>need to implement it on your WordPress site<\/strong> so that search engines can use it optimally.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Now you&#8217;re a PRO! Start implementing structured data in your project!<\/h3>\n\n\n\n<p>After reading this article and following the relevant steps, you will be able to implement structured data in WordPress like a professional, for free and without needing coding knowledge.<\/p>\n\n\n\n<p>Thanks to its correct implementation, you will be able to differentiate yourself from your competition and significantly improve your website&#8217;s SEO ranking.<\/p>\n\n\n\n<p>Try it on the pages of your site that you think could benefit from structured data and let me know how it goes \ud83d\ude42<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In SEO, any advantage to stand out from the competition is welcome. One way to make your website more visual and attractive in Google search results is by implementing structured data. Thanks to them, users will have more information about what they will find on your website, and the search engine will also be able [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":21659,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[52],"tags":[],"class_list":["post-21617","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-seo-for"],"acf":[],"_links":{"self":[{"href":"https:\/\/dinorank.com\/en-us\/blog-seo\/wp-json\/wp\/v2\/posts\/21617","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dinorank.com\/en-us\/blog-seo\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dinorank.com\/en-us\/blog-seo\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dinorank.com\/en-us\/blog-seo\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/dinorank.com\/en-us\/blog-seo\/wp-json\/wp\/v2\/comments?post=21617"}],"version-history":[{"count":13,"href":"https:\/\/dinorank.com\/en-us\/blog-seo\/wp-json\/wp\/v2\/posts\/21617\/revisions"}],"predecessor-version":[{"id":22674,"href":"https:\/\/dinorank.com\/en-us\/blog-seo\/wp-json\/wp\/v2\/posts\/21617\/revisions\/22674"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/dinorank.com\/en-us\/blog-seo\/wp-json\/wp\/v2\/media\/21659"}],"wp:attachment":[{"href":"https:\/\/dinorank.com\/en-us\/blog-seo\/wp-json\/wp\/v2\/media?parent=21617"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dinorank.com\/en-us\/blog-seo\/wp-json\/wp\/v2\/categories?post=21617"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dinorank.com\/en-us\/blog-seo\/wp-json\/wp\/v2\/tags?post=21617"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}