{"id":5816,"date":"2026-05-13T10:37:59","date_gmt":"2026-05-13T10:37:59","guid":{"rendered":"https:\/\/palegreen-louse-771791.hostingersite.com\/?page_id=5816"},"modified":"2026-05-23T18:59:16","modified_gmt":"2026-05-23T18:59:16","slug":"nos-circuits","status":"publish","type":"page","link":"https:\/\/perfectholidays.ma\/en\/nos-circuits\/","title":{"rendered":"Nos circuits"},"content":{"rendered":"<div data-elementor-type=\"wp-page\" data-elementor-id=\"5816\" class=\"elementor elementor-5816\">\n\t\t\t\t<div class=\"elementor-element elementor-element-b7a31c5 e-flex e-con-boxed e-con e-parent\" data-id=\"b7a31c5\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-8ec17f8 e-con-full e-flex e-con e-child\" data-id=\"8ec17f8\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-edf2f80 elementor-widget elementor-widget-heading\" data-id=\"edf2f80\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\">Nos circuits<\/h1>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-bfcc01b elementor-widget__width-initial elementor-widget elementor-widget-text-editor\" data-id=\"bfcc01b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>D\u00e9couvrez tous nos exemples d\u2019itin\u00e9raires au Maroc faits pour vous inspirer<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-bb06302 elementor-widget elementor-widget-jkit_button\" data-id=\"bb06302\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;none&quot;}\" data-widget_type=\"jkit_button.default\">\n\t\t\t\t\t<div  class=\"jeg-elementor-kit jkit-button  icon-position-after jeg_module___6aa6358c6ce73\" ><a href=\"\/en\/demander-un-devis\/\" class=\"jkit-button-wrapper\">Demander un devis<i class=\"icon-colored jki jki-arrow-up-right-line\" aria-hidden=\"true\"><\/i><\/a><\/div>\t\t\t\t<\/div>\n\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-e302a57 e-flex e-con-boxed e-con e-parent\" data-id=\"e302a57\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-3dd199d elementor-widget elementor-widget-dk_tours_grid\" data-id=\"3dd199d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"dk_tours_grid.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t        <div class=\"dk-tours-grid-wrapper\" id=\"dk-grid-6aa6358c6e0ae\">\r\n                            <div class=\"dk-grid-filters\">\r\n                    <button class=\"dk-filter-btn active\" data-filter=\"all\" data-cat-id=\"all\">Tous<\/button>\r\n                                            <button class=\"dk-filter-btn\" data-filter=\"maroc-sur-mesure\" data-cat-id=\"218\">\r\n                            Maroc sur mesure                        <\/button>\r\n                                            <button class=\"dk-filter-btn\" data-filter=\"sport-et-sensations\" data-cat-id=\"223\">\r\n                            Sport et sensations                        <\/button>\r\n                                            <button class=\"dk-filter-btn\" data-filter=\"voyages-a-themes\" data-cat-id=\"219\">\r\n                            Voyages \u00e0 th\u00e9mes                        <\/button>\r\n                                    <\/div>\r\n            \r\n            <div class=\"dk-tours-grid-container\">\r\n                <div class=\"dk-tours-grid columns-3\">\r\n                    <!-- Les tours seront charg\u00e9s ici via AJAX -->\r\n                <\/div>\r\n                \r\n                                    <div class=\"dk-load-more-container\">\r\n                        <button class=\"dk-load-more-btn\" data-page=\"1\" data-filter=\"all\" data-cat-id=\"all\">\r\n                            Charger plus                        <\/button>\r\n                    <\/div>\r\n                            <\/div>\r\n        <\/div>\r\n\r\n        <style>\r\n            .dk-tours-grid-wrapper {\r\n                width: 100%;\r\n            }\r\n\r\n            .dk-grid-filters {\r\n                display: flex;\r\n                flex-wrap: wrap;\r\n                justify-content: center;\r\n                gap: 10px;\r\n                margin-bottom: 40px;\r\n            }\r\n\r\n            .dk-filter-btn {\r\n                padding: 8px 24px;\r\n                background: #f5f5f5;\r\n                border: none;\r\n                border-radius: 30px;\r\n                cursor: pointer;\r\n                font-size: 14px;\r\n                font-weight: 500;\r\n                transition: all 0.3s ease;\r\n                color: #333333;\r\n            }\r\n\r\n            .dk-filter-btn:hover {\r\n                opacity: 0.8;\r\n            }\r\n\r\n            .dk-filter-btn.active {\r\n                background-color: #0073aa;\r\n                color: #ffffff;\r\n            }\r\n\r\n            .dk-tours-grid {\r\n                display: grid;\r\n                gap: 25px;\r\n            }\r\n\r\n            .dk-tours-grid.columns-1 {\r\n                grid-template-columns: 1fr;\r\n            }\r\n\r\n            .dk-tours-grid.columns-2 {\r\n                grid-template-columns: repeat(2, 1fr);\r\n            }\r\n\r\n            .dk-tours-grid.columns-3 {\r\n                grid-template-columns: repeat(3, 1fr);\r\n            }\r\n\r\n            .dk-tours-grid.columns-4 {\r\n                grid-template-columns: repeat(4, 1fr);\r\n            }\r\n\r\n            .dk-tour-card {\r\n                position: relative;\r\n                height: 500px;\r\n                background: white;\r\n                border-radius: 15px;\r\n                overflow: hidden;\r\n                transition: transform 0.3s ease;\r\n            }\r\n\r\n            .dk-tour-card:hover {\r\n                transform: translateY(-5px);\r\n            }\r\n\r\n            .dk-tour-image {\r\n                height: 100%;\r\n                width: 100%;\r\n                overflow: hidden;\r\n            }\r\n\r\n            .dk-tour-image img {\r\n                width: 100%;\r\n                height: 100%;\r\n                object-fit: cover;\r\n                transition: transform 0.5s ease;\r\n            }\r\n\r\n            .dk-tour-card:hover .dk-tour-image img {\r\n                transform: scale(1.05);\r\n            }\r\n\r\n            .dk-tour-image-placeholder {\r\n                background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);\r\n                display: flex;\r\n                align-items: center;\r\n                justify-content: center;\r\n                height: 100%;\r\n                width: 100%;\r\n                font-size: 48px;\r\n            }\r\n\r\n            .dk-tour-overlay {\r\n                position: absolute;\r\n                bottom: 0;\r\n                left: 0;\r\n                right: 0;\r\n                background: linear-gradient(to top, rgba(0, 0, 0, 0.85) 0%, rgba(0, 0, 0, 0.6) 50%, transparent 100%);\r\n                padding: 25px 20px 20px 20px;\r\n                display: flex;\r\n                justify-content: space-between;\r\n                align-items: flex-end;\r\n                gap: 15px;\r\n            }\r\n\r\n            .dk-tour-content {\r\n                flex: 1;\r\n            }\r\n\r\n            .dk-tour-title {\r\n                margin: 0 0 8px 0;\r\n                font-size: 20px;\r\n                font-weight: 600;\r\n                color: #ffffff;\r\n            }\r\n\r\n            .dk-tour-description {\r\n                font-size: 13px;\r\n                line-height: 1.5;\r\n                color: rgba(255, 255, 255, 0.85);\r\n                margin: 0;\r\n            }\r\n\r\n            .dk-tour-icon-wrapper {\r\n                flex-shrink: 0;\r\n            }\r\n\r\n            .dk-tour-icon {\r\n                display: flex;\r\n                align-items: center;\r\n                justify-content: center;\r\n                width: 44px;\r\n                height: 44px;\r\n                background-color: #ffffff;\r\n                border-radius: 50%;\r\n                transition: all 0.3s ease;\r\n                text-decoration: none;\r\n            }\r\n\r\n            .dk-tour-icon i,\r\n            .dk-tour-icon svg {\r\n                font-size: 18px;\r\n                color: #0073aa;\r\n                transition: all 0.3s ease;\r\n            }\r\n\r\n            .dk-tour-icon:hover {\r\n                background-color: #f0f0f0;\r\n                transform: translateX(5px);\r\n            }\r\n\r\n            .dk-tour-icon:hover i,\r\n            .dk-tour-icon:hover svg {\r\n                color: #005a87;\r\n            }\r\n\r\n            .dk-load-more-container {\r\n                text-align: center;\r\n                margin-top: 40px;\r\n            }\r\n\r\n            .dk-load-more-btn {\r\n                display: inline-block;\r\n                padding: 12px 30px;\r\n                background-color: #0073aa;\r\n                color: #ffffff;\r\n                border: none;\r\n                border-radius: 30px;\r\n                cursor: pointer;\r\n                font-size: 16px;\r\n                font-weight: 500;\r\n                transition: all 0.3s ease;\r\n            }\r\n\r\n            .dk-load-more-btn:hover {\r\n                background-color: #005a87;\r\n            }\r\n\r\n            .dk-load-more-btn.loading {\r\n                opacity: 0.7;\r\n                cursor: wait;\r\n            }\r\n\r\n            .dk-no-tours-message {\r\n                grid-column: 1 \/ -1;\r\n                text-align: center;\r\n                padding: 60px 20px;\r\n                background: #f9f9f9;\r\n                border-radius: 15px;\r\n            }\r\n\r\n            .dk-no-tours-message p {\r\n                font-size: 16px;\r\n                color: #666;\r\n                margin: 0;\r\n            }\r\n\r\n            \/* Animation *\/\r\n            .dk-tour-card {\r\n                animation: fadeInUp 0.6s ease forwards;\r\n            }\r\n\r\n            @keyframes fadeInUp {\r\n                from {\r\n                    opacity: 0;\r\n                    transform: translateY(30px);\r\n                }\r\n                to {\r\n                    opacity: 1;\r\n                    transform: translateY(0);\r\n                }\r\n            }\r\n\r\n            @media (max-width: 1024px) {\r\n                .dk-tours-grid.columns-4 {\r\n                    grid-template-columns: repeat(3, 1fr);\r\n                }\r\n            }\r\n\r\n            @media (max-width: 768px) {\r\n                .dk-tours-grid.columns-2,\r\n                .dk-tours-grid.columns-3,\r\n                .dk-tours-grid.columns-4 {\r\n                    grid-template-columns: repeat(2, 1fr);\r\n                }\r\n\r\n                .dk-tour-card {\r\n                    height: 400px;\r\n                }\r\n\r\n                .dk-tour-overlay {\r\n                    padding: 20px 15px 15px 15px;\r\n                }\r\n\r\n                .dk-tour-title {\r\n                    font-size: 16px;\r\n                }\r\n\r\n                .dk-tour-description {\r\n                    font-size: 11px;\r\n                }\r\n\r\n                .dk-tour-icon {\r\n                    width: 36px;\r\n                    height: 36px;\r\n                }\r\n\r\n                .dk-tour-icon i,\r\n                .dk-tour-icon svg {\r\n                    font-size: 14px;\r\n                }\r\n            }\r\n\r\n            @media (max-width: 576px) {\r\n                .dk-tours-grid.columns-2,\r\n                .dk-tours-grid.columns-3,\r\n                .dk-tours-grid.columns-4 {\r\n                    grid-template-columns: 1fr;\r\n                }\r\n\r\n                .dk-tour-card {\r\n                    height: 450px;\r\n                }\r\n\r\n                .dk-grid-filters {\r\n                    gap: 8px;\r\n                }\r\n\r\n                .dk-filter-btn {\r\n                    padding: 6px 15px;\r\n                    font-size: 12px;\r\n                }\r\n            }\r\n        <\/style>\r\n\r\n        <script>\r\n            jQuery(document).ready(function($) {\r\n                var container = $('#dk-grid-6aa6358c6e0ae');\r\n                var toursGrid = container.find('.dk-tours-grid');\r\n                var loadMoreBtn = container.find('.dk-load-more-btn');\r\n                var currentPage = 1;\r\n                var currentFilter = 'all';\r\n                var currentCatId = 'all';\r\n                var isLoading = false;\r\n                var hasMore = true;\r\n                var postsPerPage = 9;\r\n                var iconHtml = '<i aria-hidden=\"true\" class=\"far fa-arrow-alt-circle-right\"><\/i>1';\r\n                \r\n                function loadTours(reset = false) {\r\n                    if (isLoading) return;\r\n                    isLoading = true;\r\n                    \r\n                    if (reset) {\r\n                        currentPage = 1;\r\n                        toursGrid.html('');\r\n                        hasMore = true;\r\n                        if (loadMoreBtn.length) {\r\n                            loadMoreBtn.show();\r\n                            loadMoreBtn.removeClass('loading').text('Charger plus');\r\n                        }\r\n                    }\r\n                    \r\n                    if (loadMoreBtn.length && !reset) {\r\n                        loadMoreBtn.addClass('loading').text('Chargement...');\r\n                    }\r\n                    \r\n                    $.ajax({\r\n                        url: 'https:\/\/perfectholidays.ma\/wp-admin\/admin-ajax.php',\r\n                        type: 'POST',\r\n                        data: {\r\n                            action: 'dk_load_more_tours',\r\n                            nonce: '763d66920b',\r\n                            page: currentPage,\r\n                            filter: currentFilter,\r\n                            cat_id: currentCatId,\r\n                            posts_per_page: postsPerPage,\r\n                            orderby: 'menu_order',\r\n                            order: 'DESC',\r\n                            icon_html: iconHtml\r\n                        },\r\n                        success: function(response) {\r\n                            if (response.success) {\r\n                                if (response.data.html && response.data.html.trim() !== '') {\r\n                                    if (response.data.html.indexOf('dk-no-tours') === -1 && response.data.html.indexOf('dk-no-tours-message') === -1) {\r\n                                        if (reset) {\r\n                                            toursGrid.html(response.data.html);\r\n                                        } else {\r\n                                            toursGrid.append(response.data.html);\r\n                                        }\r\n                                        \r\n                                        hasMore = response.data.has_more;\r\n                                        currentPage++;\r\n                                        \r\n                                        if (loadMoreBtn.length) {\r\n                                            if (!hasMore) {\r\n                                                loadMoreBtn.hide();\r\n                                            } else {\r\n                                                loadMoreBtn.show();\r\n                                                loadMoreBtn.removeClass('loading').text('Charger plus');\r\n                                            }\r\n                                        }\r\n                                    } else {\r\n                                        if (reset) {\r\n                                            toursGrid.html(response.data.html);\r\n                                        }\r\n                                        hasMore = false;\r\n                                        if (loadMoreBtn.length) {\r\n                                            loadMoreBtn.hide();\r\n                                        }\r\n                                    }\r\n                                } else {\r\n                                    hasMore = false;\r\n                                    if (loadMoreBtn.length) {\r\n                                        loadMoreBtn.hide();\r\n                                    }\r\n                                    \r\n                                    if (reset && toursGrid.children().length === 0) {\r\n                                        toursGrid.html('<div class=\"dk-no-tours-message\"><p>Aucun tour trouv\u00e9.<\/p><\/div>');\r\n                                    }\r\n                                }\r\n                            } else {\r\n                                console.error('Erreur:', response.data);\r\n                            }\r\n                        },\r\n                        error: function(xhr, status, error) {\r\n                            console.error('AJAX Error:', error);\r\n                        },\r\n                        complete: function() {\r\n                            isLoading = false;\r\n                        }\r\n                    });\r\n                }\r\n                \r\n                loadTours(true);\r\n                \r\n                container.find('.dk-filter-btn').on('click', function() {\r\n                    var filter = $(this).data('filter');\r\n                    var catId = $(this).data('cat-id');\r\n                    \r\n                    if (currentFilter === filter) return;\r\n                    \r\n                    currentFilter = filter;\r\n                    currentCatId = catId;\r\n                    hasMore = true;\r\n                    currentPage = 1;\r\n                    \r\n                    container.find('.dk-filter-btn').removeClass('active');\r\n                    $(this).addClass('active');\r\n                    \r\n                    if (loadMoreBtn.length) {\r\n                        loadMoreBtn.show();\r\n                    }\r\n                    \r\n                    loadTours(true);\r\n                });\r\n                \r\n                if (loadMoreBtn.length) {\r\n                    loadMoreBtn.on('click', function() {\r\n                        if (!isLoading && hasMore) {\r\n                            loadTours(false);\r\n                        }\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\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>","protected":false},"excerpt":{"rendered":"<p>Nos circuits D\u00e9couvrez tous nos exemples d\u2019itin\u00e9raires au Maroc faits pour vous inspirer Demander un devis Tous Maroc sur mesure Sport et sensations Voyages \u00e0 th\u00e9mes Charger plus<\/p>","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"footnotes":""},"class_list":["post-5816","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/perfectholidays.ma\/en\/wp-json\/wp\/v2\/pages\/5816","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/perfectholidays.ma\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/perfectholidays.ma\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/perfectholidays.ma\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/perfectholidays.ma\/en\/wp-json\/wp\/v2\/comments?post=5816"}],"version-history":[{"count":80,"href":"https:\/\/perfectholidays.ma\/en\/wp-json\/wp\/v2\/pages\/5816\/revisions"}],"predecessor-version":[{"id":6685,"href":"https:\/\/perfectholidays.ma\/en\/wp-json\/wp\/v2\/pages\/5816\/revisions\/6685"}],"wp:attachment":[{"href":"https:\/\/perfectholidays.ma\/en\/wp-json\/wp\/v2\/media?parent=5816"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}