Notre magasin est ouvert du mardi au samedi 10h30 à 13h et 14h30 à 19h. Infos et commandes :
Tél 01 44 84 93 94 / Instagram / Facebook 

La Sélec'

Exclusivité magasin - Fantome FX 🇫🇷

Guitares Folk

null

Une large sélection

Plus de 100 guitares en magasin disponible à l’essai et plus encore en stock.
null

Acoustique ou électrique ?

Où trouver, écouter, essayer et acheter sa guitare à Paris ? On vous laisse deviner 🙂

20 ans d'expérience

Guitar Street a été créee il y a presque 20 ans, et je peux vous dire qu’on a toujours l’amour des guitares !

Livraison - Un tarif fixe

Nous avons un forfait fixe pour les expeditions sur la France métropolitaine à 12 eur.
Nous expedions aussi sur les Antilles, la Belgique, l’Espagne et le Portugale (Tarifs variables)

L'atelier

Nous avons un super service atelier pour vous servir. Réparation, entretien, montage de micro. Nous vous proposons un forfait à 60€ pour un réglage complet.

Support client

Nous avons un téléphone, un email, un Instagram, un Facebook. Vous devriez réussir à nous suivre facilement.
// ======================== // BC - Mega-menu Basses (mobile) : merge colonnes (SANS IDs) // - Custom Megamenu 2 & 3 -> injecté dans BASSES ÉLECTRIQUES // - Dans Custom Megamenu 4 : BASSES ACOUSTIQUES + BASSES UKULÉLÉS -> remontés au niveau de BASSES ÉLECTRIQUES // - “Nous rachetons votre basse” -> toujours dernier // ======================== (function () { "use strict"; const MOBILE_MAX = 991; function norm(s) { return (s || "") .replace(/\s+/g, " ") .trim() .toLowerCase(); } function getLabelFromLi(li) { if (!li) return ""; // EmallShop: parfois
...
, parfois direct const a = li.querySelector(":scope > .emallshop-megamenu-title a") || li.querySelector(":scope > a") || li.querySelector(":scope > div > a") || li.querySelector("a"); return a ? a.textContent : ""; } function getHrefFromLi(li) { const a = li.querySelector(":scope > .emallshop-megamenu-title a") || li.querySelector(":scope > a") || li.querySelector(":scope > div > a") || li.querySelector("a"); return a ? (a.getAttribute("href") || "") : ""; } function findBassRootLi(mobileMenu) { // On repère l’entrée "Basses" par libellé OU par URL catégorie const lis = mobileMenu.querySelectorAll("li"); for (const li of lis) { const label = norm(getLabelFromLi(li)); const href = getHrefFromLi(li); if (label === "basses" || /\/categorie-produit\/basses\/?/i.test(href)) { // doit avoir un sous-menu en mobile const sub = li.querySelector(":scope > ul.sub-menu"); if (sub) return li; } } return null; } function findElectricLi(bassRootSub) { const direct = bassRootSub.querySelectorAll(":scope > li"); for (const li of direct) { const label = norm(getLabelFromLi(li)); const href = getHrefFromLi(li); if ( label.includes("basses électriques") || /\/basses-electriques\/?/i.test(href) ) { return li; } } return null; } function findCustomMegaLi(bassRootSub, number) { const re = new RegExp("^custom megamenu\\s*" + number + "\\b", "i"); const direct = bassRootSub.querySelectorAll(":scope > li"); for (const li of direct) { const label = getLabelFromLi(li); if (re.test(label.trim())) return li; } return null; } function findBuybackLi(bassRootSub) { const direct = bassRootSub.querySelectorAll(":scope > li"); for (const li of direct) { const label = norm(getLabelFromLi(li)); const href = getHrefFromLi(li); if ( label.includes("nous rachetons votre basse") || /\/vendre-votre-instrument\/?/i.test(href) ) { return li; } } // parfois c’est plus profond const all = bassRootSub.querySelectorAll("li"); for (const li of all) { const label = norm(getLabelFromLi(li)); const href = getHrefFromLi(li); if ( label.includes("nous rachetons votre basse") || /\/vendre-votre-instrument\/?/i.test(href) ) { return li; } } return null; } function moveAllChildren(fromUl, toUl) { if (!fromUl || !toUl) return; while (fromUl.firstElementChild) { const node = fromUl.firstElementChild; // marqueur pour éviter de retraiter si re-run node.dataset.bcMoved = "1"; toUl.appendChild(node); } } function extractAcousticAndUkeLis(custom4Li) { // Dans Custom Megamenu 4, on veut récupérer les 2 LI : // - celui dont le lien contient "BASSES ACOUSTIQUES" ou href /basses-acoustiques/ // - celui dont le lien contient "BASSES UKULÉLÉS" ou href /basses-ukuleles/ const out = { acoustic: null, uke: null }; if (!custom4Li) return out; const sub = custom4Li.querySelector(":scope > ul.sub-menu"); if (!sub) return out; const direct = sub.querySelectorAll(":scope > li"); for (const li of direct) { const label = norm(getLabelFromLi(li)); const href = getHrefFromLi(li); if (!out.acoustic && (label.includes("basses acoustiques") || /\/basses-acoustiques\/?/i.test(href))) { out.acoustic = li; } else if (!out.uke && (label.includes("basses ukul") || /\/basses-ukuleles\/?/i.test(href))) { out.uke = li; } } return out; } function mergeMobileBassMenu() { if (window.innerWidth > MOBILE_MAX) return; const mobileMenu = document.querySelector(".mobile-primary-menu"); if (!mobileMenu) return; const bassRootLi = findBassRootLi(mobileMenu); if (!bassRootLi) return; const bassRootSub = bassRootLi.querySelector(":scope > ul.sub-menu"); if (!bassRootSub) return; // Idempotence : si déjà mergé sur CETTE instance de DOM if (bassRootLi.dataset.bcMerged === "1") return; const electricLi = findElectricLi(bassRootSub); if (!electricLi) return; const electricSub = electricLi.querySelector(":scope > ul.sub-menu"); if (!electricSub) return; // 1) Custom Megamenu 2 & 3 -> injectés dans BASSES ÉLECTRIQUES [2, 3].forEach((n) => { const customLi = findCustomMegaLi(bassRootSub, n); if (!customLi) return; const sub = customLi.querySelector(":scope > ul.sub-menu"); if (sub) moveAllChildren(sub, electricSub); customLi.remove(); }); // 2) Custom Megamenu 4 : remonter Acoustiques & Ukulélés au niveau racine "Basses" const custom4 = findCustomMegaLi(bassRootSub, 4); if (custom4) { const { acoustic, uke } = extractAcousticAndUkeLis(custom4); // On place juste après BASSES ÉLECTRIQUES (ordre logique) const refNode = electricLi.nextSibling; if (acoustic) { acoustic.dataset.bcMoved = "1"; bassRootSub.insertBefore(acoustic, refNode); } if (uke) { uke.dataset.bcMoved = "1"; bassRootSub.insertBefore(uke, refNode); } custom4.remove(); } // 3) “Nous rachetons votre basse” en dernier const buyback = findBuybackLi(bassRootSub); if (buyback) { bassRootSub.appendChild(buyback); } bassRootLi.dataset.bcMerged = "1"; } // Déclenchement robuste : DOMContentLoaded + Observer (menu injecté au clic burger) + resize debounced function debounce(fn, wait) { let t; return function () { clearTimeout(t); t = setTimeout(fn, wait); }; } const run = debounce(mergeMobileBassMenu, 80); document.addEventListener("DOMContentLoaded", run); window.addEventListener("resize", run); // Observer : utile si le menu mobile est reconstruit dynamiquement const obs = new MutationObserver(run); obs.observe(document.documentElement, { childList: true, subtree: true }); })(); jQuery(function($){ setTimeout(function(){ $(".woocommerce-product-search .search-field").each(function(){ var ac = $(this).data("autocomplete"); if (ac) { ac.options.deferRequestBy = 400; } }); }, 800); });