{"id":1301,"date":"2025-10-01T12:13:25","date_gmt":"2025-10-01T10:13:25","guid":{"rendered":"https:\/\/teetimespain.com\/?page_id=1301"},"modified":"2025-11-10T11:56:35","modified_gmt":"2025-11-10T10:56:35","slug":"campodegolflaserena","status":"publish","type":"page","link":"https:\/\/teetimespain.com\/es\/campodegolflaserena\/","title":{"rendered":"Campo de Golf La Serena"},"content":{"rendered":"<div data-elementor-type=\"wp-page\" data-elementor-id=\"1301\" class=\"elementor elementor-1301\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-5ebae903 e-con-full e-flex e-con e-parent\" data-id=\"5ebae903\" data-element_type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t<div class=\"elementor-element elementor-element-25433406 e-con-full e-flex e-con e-child\" data-id=\"25433406\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-607afdeb elementor-arrows-position-inside elementor-pagination-position-outside elementor-widget elementor-widget-image-carousel\" data-id=\"607afdeb\" data-element_type=\"widget\" data-settings=\"{&quot;slides_to_show&quot;:&quot;1&quot;,&quot;navigation&quot;:&quot;both&quot;,&quot;autoplay&quot;:&quot;yes&quot;,&quot;pause_on_hover&quot;:&quot;yes&quot;,&quot;pause_on_interaction&quot;:&quot;yes&quot;,&quot;autoplay_speed&quot;:5000,&quot;infinite&quot;:&quot;yes&quot;,&quot;effect&quot;:&quot;slide&quot;,&quot;speed&quot;:500}\" data-widget_type=\"image-carousel.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-image-carousel-wrapper swiper\" role=\"region\" aria-roledescription=\"carousel\" aria-label=\"Carrusel de im\u00e1genes\" dir=\"ltr\">\n\t\t\t<div class=\"elementor-image-carousel swiper-wrapper swiper-image-stretch\" aria-live=\"off\">\n\t\t\t\t\t\t\t\t<div class=\"swiper-slide\" role=\"group\" aria-roledescription=\"slide\" aria-label=\"1 of 4\"><figure class=\"swiper-slide-inner\"><img decoding=\"async\" class=\"swiper-slide-image\" src=\"https:\/\/teetimespain.com\/wp-content\/uploads\/2025\/10\/la-serena-golf-1-scaled-e1759336434402.webp\" alt=\"la serena golf 1\" \/><\/figure><\/div><div class=\"swiper-slide\" role=\"group\" aria-roledescription=\"slide\" aria-label=\"2 of 4\"><figure class=\"swiper-slide-inner\"><img decoding=\"async\" class=\"swiper-slide-image\" src=\"https:\/\/teetimespain.com\/wp-content\/uploads\/2025\/10\/la-serena-golf-5-e1759336468381.jpg\" alt=\"la serena golf 5\" \/><\/figure><\/div><div class=\"swiper-slide\" role=\"group\" aria-roledescription=\"slide\" aria-label=\"3 of 4\"><figure class=\"swiper-slide-inner\"><img decoding=\"async\" class=\"swiper-slide-image\" src=\"https:\/\/teetimespain.com\/wp-content\/uploads\/2025\/10\/la-serena-golf-3-e1759336392782.jpeg\" alt=\"la serena golf 3\" \/><\/figure><\/div><div class=\"swiper-slide\" role=\"group\" aria-roledescription=\"slide\" aria-label=\"4 of 4\"><figure class=\"swiper-slide-inner\"><img decoding=\"async\" class=\"swiper-slide-image\" src=\"https:\/\/teetimespain.com\/wp-content\/uploads\/2025\/10\/la-serena-golf-4-e1759336375130.jpg\" alt=\"la serena golf 4\" \/><\/figure><\/div>\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"elementor-swiper-button elementor-swiper-button-prev\" role=\"button\" tabindex=\"0\">\n\t\t\t\t\t\t<svg aria-hidden=\"true\" class=\"e-font-icon-svg e-eicon-chevron-left\" viewbox=\"0 0 1000 1000\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M646 125C629 125 613 133 604 142L308 442C296 454 292 471 292 487 292 504 296 521 308 533L604 854C617 867 629 875 646 875 663 875 679 871 692 858 704 846 713 829 713 812 713 796 708 779 692 767L438 487 692 225C700 217 708 204 708 187 708 171 704 154 692 142 675 129 663 125 646 125Z\"><\/path><\/svg>\t\t\t\t\t<\/div>\n\t\t\t\t\t<div class=\"elementor-swiper-button elementor-swiper-button-next\" role=\"button\" tabindex=\"0\">\n\t\t\t\t\t\t<svg aria-hidden=\"true\" class=\"e-font-icon-svg e-eicon-chevron-right\" viewbox=\"0 0 1000 1000\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M696 533C708 521 713 504 713 487 713 471 708 454 696 446L400 146C388 133 375 125 354 125 338 125 325 129 313 142 300 154 292 171 292 187 292 204 296 221 308 233L563 492 304 771C292 783 288 800 288 817 288 833 296 850 308 863 321 871 338 875 354 875 371 875 388 867 400 854L696 533Z\"><\/path><\/svg>\t\t\t\t\t<\/div>\n\t\t\t\t\n\t\t\t\t\t\t\t\t\t<div class=\"swiper-pagination\"><\/div>\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-4523e984 e-con-full e-flex e-con e-child\" data-id=\"4523e984\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-ac1169e elementor-widget elementor-widget-heading\" data-id=\"ac1169e\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\">La Serena Golf - Murcia<\/h1>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-31d44595 elementor-widget elementor-widget-text-editor\" data-id=\"31d44595\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\tLa Serena Golf se encuentra en Los Alc\u00e1zares, Murcia, muy cerca del Mar Menor, y fue dise\u00f1ado por el golfista profesional Manuel Pi\u00f1ero. Inaugurado en 2006, el campo es mayoritariamente llano, lo que permite disfrutar de amplias vistas y una experiencia de juego m\u00e1s visual, aunque el viento del Levante y los obst\u00e1culos de agua lo convierten en un campo estrat\u00e9gico.\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3d420ab8 elementor-widget elementor-widget-text-editor\" data-id=\"3d420ab8\" data-element_type=\"widget\" id=\"texto-extenso\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\tUn campo de 18 hoyos, par 72, situado a un paso del Mar Menor, en Los Alc\u00e1zares, donde el dise\u00f1o de Manuel Pi\u00f1ero combina armon\u00eda visual con retos estrat\u00e9gicos. Aunque el terreno es mayoritariamente llano, el viento local y m\u00e1s de 16 hoyos con obst\u00e1culos de agua le dan car\u00e1cter.\n<p><p>\nSus lagos, elegantes b\u00fankers y entorno natural junto al agua lo convierten en un escenario que premia la precisi\u00f3n y la audacia.\n<p>\nCon completas instalaciones \u2014club social, restaurante, zona de pr\u00e1cticas, tienda especializada\u2014 ofrece una experiencia de golf cerca del mar pero con personalidad, perfecta para aquellos que desean disfrutar de este deporte sin renunciar al paisaje, la comodidad y el buen dise\u00f1o.\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1851a1ca elementor-widget elementor-widget-html\" data-id=\"1851a1ca\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<span id=\"toggle-lector\">Ver M\u00e1s <span class=\"flecha\">\u2193<\/span><\/span>\r\n\r\n<script>\r\ndocument.addEventListener(\"DOMContentLoaded\", function(){\r\n  const texto = document.getElementById(\"texto-extenso\");\r\n  const toggle = document.getElementById(\"toggle-lector\");\r\n  const flecha = toggle.querySelector(\".flecha\");\r\n\r\n  toggle.addEventListener(\"click\", function(){\r\n    texto.classList.toggle(\"expandido\");\r\n\r\n    if(texto.classList.contains(\"expandido\")){\r\n      toggle.firstChild.textContent = \"See Less \";\r\n      flecha.textContent = \"\u2191\";\r\n    } else {\r\n      toggle.firstChild.textContent = \"See More \";\r\n      flecha.textContent = \"\u2193\";\r\n    }\r\n  });\r\n});\r\n<\/script>\r\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-7b2d267e e-flex e-con-boxed e-con e-parent\" data-id=\"7b2d267e\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-29b80aec elementor-widget elementor-widget-shortcode\" data-id=\"29b80aec\" data-element_type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">  <div class=\"tt-wrap\" data-tt='{&quot;id&quot;:&quot;laserenagolf&quot;,&quot;display&quot;:&quot;La Serena Golf&quot;,&quot;config&quot;:{&quot;hours&quot;:{&quot;start&quot;:&quot;09:03&quot;,&quot;end&quot;:&quot;17:00&quot;},&quot;stepMinutes&quot;:9,&quot;players&quot;:{&quot;min&quot;:1,&quot;max&quot;:4},&quot;prices&quot;:{&quot;greenFee&quot;:null,&quot;buggy&quot;:null,&quot;carritoManual&quot;:null,&quot;carritoElectrico&quot;:null,&quot;palosZurdo&quot;:null,&quot;palosDiestro&quot;:null,&quot;ivaPercent&quot;:21},&quot;time_bands&quot;:[],&quot;hours_by_wd&quot;:[],&quot;time_bands_by_wd&quot;:[],&quot;seasons&quot;:[{&quot;name&quot;:&quot;low1&quot;,&quot;from_md&quot;:&quot;07-01&quot;,&quot;to_md&quot;:&quot;08-31&quot;},{&quot;name&quot;:&quot;low2&quot;,&quot;from_md&quot;:&quot;06-01&quot;,&quot;to_md&quot;:&quot;06-30&quot;},{&quot;name&quot;:&quot;low3&quot;,&quot;from_md&quot;:&quot;09-01&quot;,&quot;to_md&quot;:&quot;09-30&quot;},{&quot;name&quot;:&quot;medium1&quot;,&quot;from_md&quot;:&quot;01-01&quot;,&quot;to_md&quot;:&quot;01-31&quot;},{&quot;name&quot;:&quot;medium1&quot;,&quot;from_md&quot;:&quot;12-01&quot;,&quot;to_md&quot;:&quot;12-31&quot;},{&quot;name&quot;:&quot;medium2&quot;,&quot;from_md&quot;:&quot;02-01&quot;,&quot;to_md&quot;:&quot;02-28&quot;},{&quot;name&quot;:&quot;medium3&quot;,&quot;from_md&quot;:&quot;03-01&quot;,&quot;to_md&quot;:&quot;03-31&quot;},{&quot;name&quot;:&quot;medium4&quot;,&quot;from_md&quot;:&quot;04-01&quot;,&quot;to_md&quot;:&quot;05-31&quot;},{&quot;name&quot;:&quot;high1&quot;,&quot;from_md&quot;:&quot;10-01&quot;,&quot;to_md&quot;:&quot;10-31&quot;},{&quot;name&quot;:&quot;high2&quot;,&quot;from_md&quot;:&quot;11-01&quot;,&quot;to_md&quot;:&quot;11-30&quot;}],&quot;prices_by_season&quot;:{&quot;low1&quot;:{&quot;greenFee&quot;:null,&quot;buggy&quot;:32,&quot;carritoManual&quot;:null,&quot;carritoElectrico&quot;:null,&quot;palosZurdo&quot;:null,&quot;palosDiestro&quot;:null,&quot;special_2p_buggy&quot;:null},&quot;low2&quot;:{&quot;greenFee&quot;:null,&quot;buggy&quot;:32,&quot;carritoManual&quot;:null,&quot;carritoElectrico&quot;:null,&quot;palosZurdo&quot;:null,&quot;palosDiestro&quot;:null,&quot;special_2p_buggy&quot;:null},&quot;low3&quot;:{&quot;greenFee&quot;:null,&quot;buggy&quot;:32,&quot;carritoManual&quot;:null,&quot;carritoElectrico&quot;:null,&quot;palosZurdo&quot;:null,&quot;palosDiestro&quot;:null,&quot;special_2p_buggy&quot;:null},&quot;medium1&quot;:{&quot;greenFee&quot;:null,&quot;buggy&quot;:32,&quot;carritoManual&quot;:null,&quot;carritoElectrico&quot;:null,&quot;palosZurdo&quot;:null,&quot;palosDiestro&quot;:null,&quot;special_2p_buggy&quot;:null},&quot;medium2&quot;:{&quot;greenFee&quot;:null,&quot;buggy&quot;:32,&quot;carritoManual&quot;:null,&quot;carritoElectrico&quot;:null,&quot;palosZurdo&quot;:null,&quot;palosDiestro&quot;:null,&quot;special_2p_buggy&quot;:null},&quot;medium3&quot;:{&quot;greenFee&quot;:null,&quot;buggy&quot;:32,&quot;carritoManual&quot;:null,&quot;carritoElectrico&quot;:null,&quot;palosZurdo&quot;:null,&quot;palosDiestro&quot;:null,&quot;special_2p_buggy&quot;:null},&quot;medium4&quot;:{&quot;greenFee&quot;:null,&quot;buggy&quot;:32,&quot;carritoManual&quot;:null,&quot;carritoElectrico&quot;:null,&quot;palosZurdo&quot;:null,&quot;palosDiestro&quot;:null,&quot;special_2p_buggy&quot;:null},&quot;high1&quot;:{&quot;greenFee&quot;:null,&quot;buggy&quot;:32,&quot;carritoManual&quot;:null,&quot;carritoElectrico&quot;:null,&quot;palosZurdo&quot;:null,&quot;palosDiestro&quot;:null,&quot;special_2p_buggy&quot;:null},&quot;high2&quot;:{&quot;greenFee&quot;:null,&quot;buggy&quot;:32,&quot;carritoManual&quot;:null,&quot;carritoElectrico&quot;:null,&quot;palosZurdo&quot;:null,&quot;palosDiestro&quot;:null,&quot;special_2p_buggy&quot;:null}},&quot;closed_until&quot;:null,&quot;time_bands_by_season&quot;:{&quot;low1&quot;:[{&quot;from&quot;:&quot;09:03&quot;,&quot;to&quot;:&quot;13:14&quot;,&quot;prices&quot;:{&quot;greenFee&quot;:45,&quot;special_2p_buggy&quot;:122}},{&quot;from&quot;:&quot;13:15&quot;,&quot;to&quot;:&quot;17:00&quot;,&quot;prices&quot;:{&quot;greenFee&quot;:40,&quot;special_2p_buggy&quot;:112}}],&quot;low2&quot;:[{&quot;from&quot;:&quot;09:03&quot;,&quot;to&quot;:&quot;13:14&quot;,&quot;prices&quot;:{&quot;greenFee&quot;:55,&quot;special_2p_buggy&quot;:142}},{&quot;from&quot;:&quot;13:15&quot;,&quot;to&quot;:&quot;17:00&quot;,&quot;prices&quot;:{&quot;greenFee&quot;:45,&quot;special_2p_buggy&quot;:122}}],&quot;low3&quot;:[{&quot;from&quot;:&quot;09:03&quot;,&quot;to&quot;:&quot;15:29&quot;,&quot;prices&quot;:{&quot;greenFee&quot;:55,&quot;special_2p_buggy&quot;:142}},{&quot;from&quot;:&quot;15:30&quot;,&quot;to&quot;:&quot;17:00&quot;,&quot;prices&quot;:{&quot;greenFee&quot;:50,&quot;special_2p_buggy&quot;:132}}],&quot;medium1&quot;:[{&quot;from&quot;:&quot;09:03&quot;,&quot;to&quot;:&quot;13:14&quot;,&quot;prices&quot;:{&quot;greenFee&quot;:60,&quot;special_2p_buggy&quot;:152}},{&quot;from&quot;:&quot;13:15&quot;,&quot;to&quot;:&quot;17:00&quot;,&quot;prices&quot;:{&quot;greenFee&quot;:50,&quot;special_2p_buggy&quot;:132}}],&quot;medium2&quot;:[{&quot;from&quot;:&quot;09:03&quot;,&quot;to&quot;:&quot;13:14&quot;,&quot;prices&quot;:{&quot;greenFee&quot;:65,&quot;special_2p_buggy&quot;:162}},{&quot;from&quot;:&quot;13:15&quot;,&quot;to&quot;:&quot;17:00&quot;,&quot;prices&quot;:{&quot;greenFee&quot;:50,&quot;special_2p_buggy&quot;:132}}],&quot;medium3&quot;:[{&quot;from&quot;:&quot;09:03&quot;,&quot;to&quot;:&quot;14:44&quot;,&quot;prices&quot;:{&quot;greenFee&quot;:65,&quot;special_2p_buggy&quot;:162}},{&quot;from&quot;:&quot;14:45&quot;,&quot;to&quot;:&quot;17:00&quot;,&quot;prices&quot;:{&quot;greenFee&quot;:50,&quot;special_2p_buggy&quot;:132}}],&quot;medium4&quot;:[{&quot;from&quot;:&quot;09:03&quot;,&quot;to&quot;:&quot;15:29&quot;,&quot;prices&quot;:{&quot;greenFee&quot;:65,&quot;special_2p_buggy&quot;:162}},{&quot;from&quot;:&quot;15:30&quot;,&quot;to&quot;:&quot;17:00&quot;,&quot;prices&quot;:{&quot;greenFee&quot;:50,&quot;special_2p_buggy&quot;:132}}],&quot;high1&quot;:[{&quot;from&quot;:&quot;09:03&quot;,&quot;to&quot;:&quot;15:29&quot;,&quot;prices&quot;:{&quot;greenFee&quot;:70,&quot;special_2p_buggy&quot;:172}},{&quot;from&quot;:&quot;15:30&quot;,&quot;to&quot;:&quot;17:00&quot;,&quot;prices&quot;:{&quot;greenFee&quot;:55,&quot;special_2p_buggy&quot;:142}}],&quot;high2&quot;:[{&quot;from&quot;:&quot;09:03&quot;,&quot;to&quot;:&quot;13:59&quot;,&quot;prices&quot;:{&quot;greenFee&quot;:70,&quot;special_2p_buggy&quot;:172}},{&quot;from&quot;:&quot;14:00&quot;,&quot;to&quot;:&quot;17:00&quot;,&quot;prices&quot;:{&quot;greenFee&quot;:55,&quot;special_2p_buggy&quot;:142}}]}},&quot;region&quot;:&quot;murcia&quot;,&quot;city&quot;:&quot;Murcia&quot;,&quot;stripePk&quot;:&quot;pk_live_51S2UQd7mKyDJApIAt3VDp0DoD96vjeYS6omBoorn2T33cOHdEdEXcxRgBLdfcEAhqejqROyJtoaH8NM6sUfxW5ab00bMs5gqhs&quot;,&quot;special&quot;:{&quot;enabled&quot;:true},&quot;user&quot;:{&quot;isLoggedIn&quot;:false,&quot;canPay&quot;:false,&quot;loginUrl&quot;:&quot;https:\\\/\\\/teetimespain.com\\\/wp-login.php?redirect_to=https%3A%2F%2Fteetimespain.com%2Fes%2Fcampodegolflaserena%2F&quot;}}'>\n    <h2 class=\"tt-title\">La Serena Golf<\/h2>\n\n    <div class=\"tt-row\">\n      <div class=\"tt-field\">\n        <label for=\"tt-date\">Fecha<\/label>\n        <input type=\"date\" id=\"tt-date\" min=\"2026-05-21\" max=\"2027-05-21\">\n      <\/div>\n      <div class=\"tt-field\">\n        <label for=\"tt-time\">Hora<\/label>\n        <select id=\"tt-time\"><option value=\"\">Select time<\/option><\/select>\n      <\/div>\n      <div class=\"tt-field\">\n        <label for=\"tt-players\">Jugadores<\/label>\n        <select id=\"tt-players\">\n          <option value=\"1\">1<\/option>\n          <option value=\"2\" selected>2<\/option>\n          <option value=\"3\">3<\/option>\n          <option value=\"4\">4<\/option>\n        <\/select>\n      <\/div>\n    <\/div>\n\n    <div class=\"tt-products\">\n      <div class=\"tt-product\">\n        <div class=\"tt-label\">Green Fee<\/div>\n        <div class=\"tt-unit\" id=\"tt-price-greenfee\">-<\/div>\n        <div class=\"tt-qty\">x&nbsp;<span id=\"tt-q-greenfee\">2<\/span><\/div>\n      <\/div>\n\n            <div class=\"tt-product\">\n        <div class=\"tt-label\" style=\"color:#e63946; font-weight:bolder;\">\n  Oferta Especial: 2P + Buggy\n<\/div>\n        <div class=\"tt-unit\" id=\"tt-price-special\">-<\/div>\n        <div class=\"tt-qty\">\n          <select id=\"tt-special-2p\"><\/select>\n        <\/div>\n      <\/div>\n          <\/div>\n\n        \n\n      <div class=\"tt-product\">\n        <div class=\"tt-label\">Buggy<\/div>\n        <div class=\"tt-unit\" id=\"tt-price-buggy\">-<\/div>\n        <div class=\"tt-qty\">\n          <select id=\"tt-buggy\"><\/select>\n        <\/div>\n      <\/div>\n\n      <div class=\"tt-product\">\n        <div class=\"tt-label\">Carrito<\/div>\n        <div class=\"tt-unit\" id=\"tt-price-carro-manual\">-<\/div>\n        <div class=\"tt-qty\">\n          <select id=\"tt-carro-manual\"><\/select>\n        <\/div>\n      <\/div>\n\n      <div class=\"tt-product\">\n        <div class=\"tt-label\">Carrito Electrico<\/div>\n        <div class=\"tt-unit\" id=\"tt-price-carro-electrico\">-<\/div>\n        <div class=\"tt-qty\">\n          <select id=\"tt-carro-electrico\"><\/select>\n        <\/div>\n      <\/div>\n\n      <div class=\"tt-product\">\n        <div class=\"tt-label\">Palos de Zurdo<\/div>\n        <div class=\"tt-unit\" id=\"tt-price-palos-zurdo\">-<\/div>\n        <div class=\"tt-qty\">\n          <select id=\"tt-palos-zurdo\"><\/select>\n        <\/div>\n      <\/div>\n\n      <div class=\"tt-product\">\n        <div class=\"tt-label\">Palos de Diestro<\/div>\n        <div class=\"tt-unit\" id=\"tt-price-palos-diestro\">-<\/div>\n        <div class=\"tt-qty\">\n          <select id=\"tt-palos-diestro\"><\/select>\n        <\/div>\n      <\/div>\n\n    <div class=\"tt-summary\">\n      <div><strong>Total: <\/strong><span id=\"tt-total\">0,00 \u20ac<\/span><\/div>\n      <button id=\"tt-pay\" type=\"button\">A\u00f1adir al Carrito<\/button>\n      <div class=\"tt-note\" id=\"tt-note\"><\/div>\n    <\/div>\n  <\/div>\n\n<script>\n  (function(){\n    const wrap = document.querySelector('.tt-wrap[data-tt]'); if(!wrap) return;\n    const DATA = JSON.parse(wrap.getAttribute('data-tt'));\n    const CFG  = DATA.config;\n\n    const dateEl = wrap.querySelector('#tt-date');\n    const timeEl = wrap.querySelector('#tt-time');\n    const playersEl = wrap.querySelector('#tt-players');\n\n    const unitGF = wrap.querySelector('#tt-price-greenfee');\n    const unitBug = wrap.querySelector('#tt-price-buggy');\n    const unitCM = wrap.querySelector('#tt-price-carro-manual');\n    const unitCE = wrap.querySelector('#tt-price-carro-electrico');\n    const unitPZ = wrap.querySelector('#tt-price-palos-zurdo');\n    const unitPD = wrap.querySelector('#tt-price-palos-diestro');\n    const unitSP = wrap.querySelector('#tt-price-special');\n    const unit9H = wrap.querySelector('#tt-price-9holes');\n\n    const selBug = wrap.querySelector('#tt-buggy');\n    const selCM  = wrap.querySelector('#tt-carro-manual');\n    const selCE  = wrap.querySelector('#tt-carro-electrico');\n    const selPZ  = wrap.querySelector('#tt-palos-zurdo');\n    const selPD  = wrap.querySelector('#tt-palos-diestro');\n    const selSP  = wrap.querySelector('#tt-special-2p');\n    const sel9H  = wrap.querySelector('#tt-9-holes') || null;\n\n    const qtyGFtxt = wrap.querySelector('#tt-q-greenfee');\n\n    const totalEl = wrap.querySelector('#tt-total');\n    const noteEl  = wrap.querySelector('#tt-note');\n    const payBtn  = wrap.querySelector('#tt-pay');\n\n    function hhmmToMinutes(hhmm){ const [h,m]=hhmm.split(':').map(Number); return h*60+m; }\n    function minutesToHHMM(min){ const h=String(Math.floor(min\/60)).padStart(2,'0'); const m=String(min%60).padStart(2,'0'); return `${h}:${m}`; }\n    function fmt(v){ if(v===null||v===undefined||isNaN(v))return 'Price to be confirmed'; return (Number(v).toFixed(2).replace('.',',')+' \u20ac'); }\n\n    function setSelectRange(sel, max){\n      const prev = parseInt(sel.value||'0',10);\n      sel.innerHTML = '';\n      for(let i=0;i<=max;i++){\n        const o=document.createElement('option');\n        o.value=String(i); o.textContent=String(i);\n        sel.appendChild(o);\n      }\n      sel.value = String(Math.min(prev, max));\n    }\n\n    \/\/ Filtra horas pasadas si la fecha es hoy (redondeo al siguiente m\u00faltiplo del paso)\n    function buildTimeSlotsForDate(cfg, dateISO){\n      const d = new Date(dateISO+'T00:00:00');\n      const wd = (d.getDay()+6)%7; \/\/ 0=Lun..6=Dom\n      if (cfg.closed_until){\n        const cut = new Date(cfg.closed_until+'T00:00:00');\n        if (d < cut) return [];\n      }\n      const hours = (cfg.hours_by_wd && cfg.hours_by_wd[wd]) ? cfg.hours_by_wd[wd] : cfg.hours;\n      if (!hours) return [];\n      const step = cfg.stepMinutes || 10;\n      let startMin = hhmmToMinutes(hours.start);\n      const endMin = hhmmToMinutes(hours.end);\n\n      \/\/ Si es hoy, excluir horas ya pasadas\n      const today = new Date();\n      const yyyy = today.getFullYear(), mm = String(today.getMonth()+1).padStart(2,'0'), dd = String(today.getDate()).padStart(2,'0');\n      const todayISO = `${yyyy}-${mm}-${dd}`;\n      if (dateISO === todayISO){\n        const nowMin = today.getHours()*60 + today.getMinutes();\n        const rounded = Math.ceil(nowMin\/step)*step;\n        if (rounded > startMin) startMin = rounded;\n      }\n\n      const slots=[];\n      for(let t=startMin; t<=endMin; t+=step){ slots.push(minutesToHHMM(t)); }\n      return slots;\n    }\n\n\/\/ =================================================================\n\/\/ L\u00f3gica de precios avanzada (con temporadas + fines de semana\/festivos)\n\/\/ =================================================================\nfunction resolveEffectivePrices(cfg, dateISO, hhmm) {\n  \/\/ Precios base por defecto (suplementos)\n  let P = Object.assign({}, (cfg.prices || {}));\n  let activeSeason = null;\n\n  \/\/ 1. Determinar la temporada activa (si existe)\n  if (cfg.seasons && cfg.seasons.length > 0 && dateISO) {\n    for (const s of cfg.seasons) {\n      if (s.from && s.to) { \/\/ Formato YYYY-MM-DD\n        if (dateISO >= s.from && dateISO <= s.to) { activeSeason = s.name; break; }\n      } else if (s.from_md && s.to_md) { \/\/ Formato MM-DD\n        const y = (dateISO || '').slice(0, 4);\n        const md = (dateISO || '').slice(5);\n        const fromY = y + '-' + s.from_md;\n        const toY   = y + '-' + s.to_md;\n        if (fromY <= toY) {\n          if (dateISO >= fromY && dateISO <= toY) { activeSeason = s.name; break; }\n        } else {\n          if (dateISO >= fromY || dateISO <= toY) { activeSeason = s.name; break; }\n        }\n      }\n    }\n  }\n\n  \/\/ 2. Si hay temporada, aplicar precios base de esa temporada (suplementos)\n  if (activeSeason && cfg.prices_by_season && cfg.prices_by_season[activeSeason]) {\n    P = Object.assign({}, P, cfg.prices_by_season[activeSeason]);\n  }\n\n\/\/ 3. Determinar el tipo de d\u00eda (laborable o finde\/festivo)\nconst d = new Date(dateISO + 'T00:00:00');\nconst wd = d.getDay(); \/\/ 0=Domingo, 6=S\u00e1bado\nlet isWeekend = (wd === 0 || wd === 6);\nconst md = dateISO.slice(5); \/\/ formato MM-DD\n\n\/\/ Festivos configurados \u2192 fin de semana\nif (cfg.special_days && cfg.special_days.includes(md)) {\n  isWeekend = true;\n}\n\n\/\/ \ud83d\udd12 BLOQUE DEFINITIVO: forzar viernes como weekend SOLO si el campo lo pide\nif (cfg.force_weekend_from_friday === true && wd >= 5) {\n  isWeekend = true;\n}\n\n\/\/ 4. Determinar qu\u00e9 conjunto de franjas horarias usar\n  let bands = cfg.time_bands || [];\n\n  \/\/ Prioridad 1: Bandas por temporada + tipo de d\u00eda (weekday \/ weekend)\n  if (\n    activeSeason &&\n    cfg.time_bands_by_season &&\n    cfg.time_bands_by_season[activeSeason]\n  ) {\n    const seasonBands = cfg.time_bands_by_season[activeSeason];\n    if (seasonBands.weekday && seasonBands.weekend) {\n      bands = isWeekend ? seasonBands.weekend : seasonBands.weekday;\n    } else {\n      \/\/ Compatibilidad: si el campo no diferencia tipo de d\u00eda\n      bands = seasonBands;\n    }\n  }\n\n  \/\/ Prioridad 2: Bandas por d\u00eda de la semana (ej. Alenda)\n  else if (cfg.time_bands_by_wd && cfg.time_bands_by_wd[wd]) {\n    bands = cfg.time_bands_by_wd[wd];\n  }\n\n  \/\/ 5. Aplicar precio de la franja horaria correspondiente\n  if (hhmm && bands.length > 0) {\n    const m = hhmmToMinutes(hhmm);\n    let priceFoundInBand = false;\n    for (const b of bands) {\n      const f = hhmmToMinutes(b.from), t = hhmmToMinutes(b.to);\n      if (m >= f && m <= t) {\n        if (b.prices) P = Object.assign({}, P, b.prices);\n        priceFoundInBand = true;\n        break;\n      }\n    }\n    \/\/ Si no se encuentra franja v\u00e1lida, anular el green fee\n    if (!priceFoundInBand && cfg.time_bands) {\n      P.greenFee = null;\n    }\n  }\n\n  return P;\n}\n\n    \/\/ =================================================================\n    \/\/ FIN DE LA NUEVA L\u00d3GICA\n    \/\/ =================================================================\n\n    function setUnitPricesText(P){\n      unitGF.textContent = fmt(P.greenFee);\n      unitBug.textContent= fmt(P.buggy);\n      unitCM.textContent = fmt(P.carritoManual);\n      unitCE.textContent = fmt(P.carritoElectrico);\n      unitPZ.textContent = fmt(P.palosZurdo);\n      unitPD.textContent = fmt(P.palosDiestro);\n      if (unitSP) unitSP.textContent = fmt(P.special_2p_buggy);\n      if (unit9H) unit9H.textContent = fmt(P.holes9);\n    }\n\nfunction clampQuantities(){\n  const players = parseInt(playersEl.value||'2',10);\n\n  const spMax = Math.floor(players\/2);\n  if (selSP) setSelectRange(selSP, spMax);\n\n  if (sel9H) setSelectRange(sel9H, players);\n\n  const sp = selSP ? parseInt(selSP.value||'0',10) : 0;\n  const nineH = sel9H ? parseInt(sel9H.value||'0',10) : 0;\n\n  const includedBuggies = sp;\n  const bugMax = Math.max(0, players - includedBuggies);\n  setSelectRange(selBug, bugMax);\n\n  [selCM, selCE, selPZ, selPD].forEach(sel=>{\n    if (sel) setSelectRange(sel, players);\n  });\n\n  const palosTot =\n    (parseInt(selPZ.value||'0',10) +\n     parseInt(selPD.value||'0',10));\n\n  if (palosTot > players){\n    const sobra = palosTot - players;\n    const curPD = parseInt(selPD.value||'0',10);\n    selPD.value = String(Math.max(0, curPD - sobra));\n  }\n\n  \/\/ 9 Holes sustituye completamente al Green Fee\n  if (nineH > 0) {\n    qtyGFtxt.textContent = '0';\n  } else {\n    const covered = Math.min(players, sp*2);\n    const gfUnits = Math.max(0, players - covered);\n    qtyGFtxt.textContent = String(gfUnits);\n  }\n}\n\nfunction computeTotal(P){\n  const players = parseInt(playersEl.value||'2',10);\n  const sp = selSP ? parseInt(selSP.value||'0',10) : 0;\n  const nineH = sel9H ? parseInt(sel9H.value||'0',10) : 0;\n\n  let gfUnits = 0;\n\n  if (nineH === 0) {\n    const covered = Math.min(players, sp*2);\n    gfUnits = Math.max(0, players - covered);\n  }\n\n  let total = 0;\n\n  if (P.greenFee!=null && !isNaN(P.greenFee))\n    total += gfUnits * Number(P.greenFee);\n\n  if (nineH === 0 && unitSP && P.special_2p_buggy!=null && !isNaN(P.special_2p_buggy))\n    total += sp * Number(P.special_2p_buggy);\n\n  if (nineH > 0 && unit9H && P.holes9!=null && !isNaN(P.holes9))\n    total += Number(sel9H.value||0) * Number(P.holes9);\n\n  if (P.buggy!=null && !isNaN(P.buggy))\n    total += Number(selBug.value||0) * Number(P.buggy);\n\n  if (P.carritoManual!=null && !isNaN(P.carritoManual))\n    total += Number(selCM.value||0) * Number(P.carritoManual);\n\n  if (P.carritoElectrico!=null && !isNaN(P.carritoElectrico))\n    total += Number(selCE.value||0) * Number(P.carritoElectrico);\n\n  if (P.palosZurdo!=null && !isNaN(P.palosZurdo))\n    total += Number(selPZ.value||0) * Number(P.palosZurdo);\n\n  if (P.palosDiestro!=null && !isNaN(P.palosDiestro))\n    total += Number(selPD.value||0) * Number(P.palosDiestro);\n\n  return total;\n}\n\nfunction getPendingItems(P){\n  const pending = [];\n  const players = parseInt(playersEl.value||'2',10);\n  const sp = selSP ? parseInt(selSP.value||'0',10) : 0;\n  const nineH = sel9H ? parseInt(sel9H.value||'0',10) : 0;\n\n  const isMissingPrice = (value) => (value === null || value === undefined || value === '' || isNaN(Number(value)));\n\n  let gfUnits = 0;\n  if (nineH === 0) {\n    const covered = Math.min(players, sp * 2);\n    gfUnits = Math.max(0, players - covered);\n  }\n\n  if (gfUnits > 0 && isMissingPrice(P.greenFee)) pending.push('Green Fee');\n  if (sp > 0 && unitSP && isMissingPrice(P.special_2p_buggy)) pending.push('Special 2P + Buggy');\n  if (nineH > 0 && unit9H && isMissingPrice(P.holes9)) pending.push('9 Holes');\n  if (Number(selBug.value||0) > 0 && isMissingPrice(P.buggy)) pending.push('Buggy');\n  if (Number(selCM.value||0) > 0 && isMissingPrice(P.carritoManual)) pending.push('Trolley');\n  if (Number(selCE.value||0) > 0 && isMissingPrice(P.carritoElectrico)) pending.push('Electric Trolley');\n  if (Number(selPZ.value||0) > 0 && isMissingPrice(P.palosZurdo)) pending.push('Left-handed clubs');\n  if (Number(selPD.value||0) > 0 && isMissingPrice(P.palosDiestro)) pending.push('Right-handed clubs');\n\n  return pending;\n}\n    function updateUI(){\n      const dateISO = dateEl.value;\n      const hhmm    = timeEl.value;\n      if (!dateISO){\n        setUnitPricesText(CFG.prices||{});\n        totalEl.textContent='0,00 \u20ac';\n        noteEl.textContent='Selecciona fecha.';\n        return;\n      }\n      const P = resolveEffectivePrices(CFG, dateISO, hhmm||null);\n      setUnitPricesText(P); clampQuantities();\n      const total = computeTotal(P);\n      totalEl.textContent = total.toFixed(2).replace('.',',')+' \u20ac';\n      noteEl.textContent='';\n    }\n\n    function populateTimes(){\n      const dateISO = dateEl.value;\n      timeEl.innerHTML = '<option value=\"\">Select time<\/option>';\n      if (!dateISO){ updateUI(); return; }\n      const slots = buildTimeSlotsForDate(CFG, dateISO);\n      slots.forEach(s=>{ const o=document.createElement('option'); o.value=s;o.textContent=s; timeEl.appendChild(o); });\n      updateUI();\n    }\n\n    \/\/ Eventos\n    dateEl.addEventListener('change', populateTimes);\n    timeEl.addEventListener('change', updateUI);\n    playersEl.addEventListener('change', ()=>{ clampQuantities(); updateUI(); });\n\n    [selBug, selCM, selCE, selPZ, selPD].forEach(sel=>{\n      sel.addEventListener('change', ()=>{ clampQuantities(); updateUI(); });\n    });\n    if (selSP){\n      selSP.addEventListener('change', ()=>{ clampQuantities(); updateUI(); });\n    }\n    if (sel9H){\n      sel9H.addEventListener('change', ()=>{ clampQuantities(); updateUI(); });\n    }\n\n    \/\/ Init selects de cantidades (0..jugadores por defecto)\n    (function initQtySelects(){\n      const players = parseInt(playersEl.value||'2',10);\n      setSelectRange(selBug, players);\n      setSelectRange(selCM,  players);\n      setSelectRange(selCE,  players);\n      setSelectRange(selPZ,  players);\n      setSelectRange(selPD,  players);\n      if (selSP) setSelectRange(selSP, Math.floor(players\/2));\n      if (sel9H) setSelectRange(sel9H, players);\n    })();\n\n    \/\/ Init (fecha hoy + horas filtradas)\n    (function(){\n      const t=new Date(); const y=t.getFullYear(); const m=String(t.getMonth()+1).padStart(2,'0'); const d=String(t.getDate()).padStart(2,'0');\n      dateEl.value=`${y}-${m}-${d}`; populateTimes();\n    })();\n\n\/\/ Ir al carrito (sin exigir login) + validaci\u00f3n de Fecha, Hora y Participantes\nconst CART_URL = 'https:\/\/teetimespain.com\/carrito\/';\nconst REQUIRED_MSG = \"PLEASE NOTE: It\u2019s necessary to select the Date, Time and Participants to continue. \/ POR FAVOR, tenga en cuenta: Es necesario seleccionar D\u00eda, Hora y Participantes para continuar.\";\n\npayBtn.addEventListener('click', ()=>{\n  const date    = (dateEl.value || '').trim();\n  const time    = (timeEl.value || '').trim();\n  const players = (playersEl.value || '').trim();\n\n  \/\/ Validaci\u00f3n m\u00ednima obligatoria\n  if (!date || !time || !players) {\n    alert(REQUIRED_MSG);\n    if (!date)    { dateEl.focus();    return; }\n    if (!time)    { timeEl.focus();    return; }\n    if (!players) { playersEl.focus(); return; }\n    return;\n  }\n\n  \/\/ Add to cart (LocalStorage), sin redirigir\n  const qBuggy = Number((selBug && selBug.value) || 0);\n  const qCM    = Number((selCM  && selCM.value)  || 0);\n  const qCE    = Number((selCE  && selCE.value)  || 0);\n  const qPZ    = Number((selPZ  && selPZ.value)  || 0);\n  const qPD    = Number((selPD  && selPD.value)  || 0);\n  const qSP    = Number((selSP  && selSP.value)  || 0);\n  const q9H    = Number((sel9H  && sel9H.value)  || 0);\n\n  const effectivePrices = (typeof resolveEffectivePrices === 'function')\n    ? resolveEffectivePrices(CFG, date, time)\n    : (CFG.prices || {});\n  const totalNum = (typeof computeTotal === 'function')\n    ? Number(computeTotal(effectivePrices))\n    : 0;\n  const totalText = (totalEl && totalEl.textContent ? totalEl.textContent : '0,00 \u20ac').trim();\n  const pendingItems = (typeof getPendingItems === 'function')\n    ? getPendingItems(effectivePrices)\n    : [];\n\n  const item = {\n    id: (window.crypto && crypto.randomUUID) ? crypto.randomUUID() : Date.now(),\n    campo: { id: DATA.id, nombre: DATA.display },\n    fecha: date,\n    hora: time,\n    jugadores: Number(players),\n    cantidades: {\n      buggy: qBuggy,\n      carro_manual: qCM,\n      carro_electrico: qCE,\n      palos_zurdo: qPZ,\n      palos_diestro: qPD,\n      special_2p_buggy: qSP,\n      holes9: q9H\n    },\n    preciosAplicados: effectivePrices,\n    pendingItems: pendingItems,\n    hasPendingPayment: pendingItems.length > 0,\n    total: Number(totalNum.toFixed(2)),\n    totalTexto: totalText,\n    agregadoEn: Date.now()\n  };\n\n  try {\n    const KEY='ttCartItems';\n    const arr = JSON.parse(localStorage.getItem(KEY) || '[]');\n    arr.push(item);\n    localStorage.setItem(KEY, JSON.stringify(arr));\n    alert('Added to cart.');\n  } catch(e) {\n    alert('Could not add to cart.');\n  }\n});\n\n  })();\n  <\/script>\n  <\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-7bd88953 e-con-full e-flex e-con e-parent\" data-id=\"7bd88953\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-280a08c7 elementor-widget elementor-widget-text-editor\" data-id=\"280a08c7\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<h2>No te preocupes por la ubicaci\u00f3n, aqu\u00ed tienes un mapa para que puedas llegar sin ning\u00fan problema.<\/h2>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1aa62e64 elementor-widget__width-initial elementor-widget elementor-widget-google_maps\" data-id=\"1aa62e64\" data-element_type=\"widget\" data-widget_type=\"google_maps.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-custom-embed\">\n\t\t\t<iframe loading=\"lazy\"\n\t\t\t\t\tsrc=\"https:\/\/maps.google.com\/maps?q=Av.%20Pr%C3%ADncipe%20Felipe%2C%2030%2C%2030710%20Los%20Alc%C3%A1zares%2C%20Murcia&#038;t=m&#038;z=14&#038;output=embed&#038;iwloc=near\"\n\t\t\t\t\ttitle=\"Av. Pr\u00edncipe Felipe, 30, 30710 Los Alc\u00e1zares, Murcia\"\n\t\t\t\t\taria-label=\"Av. Pr\u00edncipe Felipe, 30, 30710 Los Alc\u00e1zares, Murcia\"\n\t\t\t><\/iframe>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-6fbd45f e-flex e-con-boxed e-con e-parent\" data-id=\"6fbd45f\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-2926b625 elementor-widget elementor-widget-spacer\" data-id=\"2926b625\" data-element_type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>","protected":false},"excerpt":{"rendered":"<p>La Serena Golf &#8211; Murcia La Serena Golf is located in Los Alc\u00e1zares, Murcia, very close to the Mar Menor, and was designed by professional golfer Manuel Pi\u00f1ero. Opened in 2006, the course is mostly flat, allowing for wide views and a more visual playing experience, although the Levante wind and water hazards make it [&hellip;]<\/p>","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"categories":[11],"tags":[],"class_list":["post-1301","page","type-page","status-publish","hentry","category-camposdegolfff"],"_links":{"self":[{"href":"https:\/\/teetimespain.com\/es\/wp-json\/wp\/v2\/pages\/1301","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/teetimespain.com\/es\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/teetimespain.com\/es\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/teetimespain.com\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/teetimespain.com\/es\/wp-json\/wp\/v2\/comments?post=1301"}],"version-history":[{"count":19,"href":"https:\/\/teetimespain.com\/es\/wp-json\/wp\/v2\/pages\/1301\/revisions"}],"predecessor-version":[{"id":3187,"href":"https:\/\/teetimespain.com\/es\/wp-json\/wp\/v2\/pages\/1301\/revisions\/3187"}],"wp:attachment":[{"href":"https:\/\/teetimespain.com\/es\/wp-json\/wp\/v2\/media?parent=1301"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/teetimespain.com\/es\/wp-json\/wp\/v2\/categories?post=1301"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/teetimespain.com\/es\/wp-json\/wp\/v2\/tags?post=1301"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}