Free Shipping · 30-Day Free Returns

Cart

Cart

Your Cart is Empty

Back To Shop

Réussir la localisation d’un casino en ligne : guide technique complet pour les opérateurs francophones, couvrant législation locale, architecture multilingue robuste, traduction dynamique ou statique des jeux vidéo ainsi que stratégies SEO avancées afin d’attirer durablement joueurs français et belges tout en maximisant ROI global

Réussir la localisation d’un casino en ligne : guide technique complet pour les opérateurs francophones, couvrant législation locale, architecture multilingue robuste, traduction dynamique ou statique des jeux vidéo ainsi que stratégies SEO avancées afin d’attirer durablement joueurs français et belges tout en maximisant ROI global

Le marché des casinos en ligne connaît une croissance exponentielle depuis la pandémie, avec plus de vingt millions d’utilisateurs actifs chaque mois en Europe. Cette dynamique s’accompagne d’une concurrence féroce où chaque opérateur cherche à se différencier non seulement par ses bonus attractifs ou son catalogue de jeux, mais aussi par sa capacité à parler la langue du joueur. Pour les pays francophones – France, Belgique Wallonie, Suisse Romande et même certaines régions du Canada – la barrière linguistique reste le principal obstacle à la conversion. Une plateforme qui propose uniquement une version anglaise voit son taux de rétention chuter de près de trente pour cent dès les premières sessions.

Pour illustrer concrètement ce que peut apporter une localisation soignée, prenons l’exemple d’un partenariat avec un site de paris sportif spécialisé dans le classement des meilleurs sites de jeu en ligne. Campus2023.Fr analyse chaque critère – RTP moyen, volatilité des machines à sous, conditions de mise et support client – afin d’identifier le meilleur site pari en ligne pour chaque profil joueur. En intégrant leurs recommandations dans le processus de localisation, un casino peut ajuster ses offres promotionnelles (bonus de bienvenue jusqu’à 200 €, tours gratuits sur Starburst) et ses messages d’assistance pour répondre exactement aux attentes françaises et belges.

Ce guide se décompose en cinq parties essentielles : une analyse préliminaire du marché francophone pour identifier les exigences légales et comportementales ; la conception d’une architecture technique capable de gérer plusieurs langues sans alourdir le code ; le processus détaillé de localisation du contenu ludique incluant traduction dynamique et adaptation visuelle ; les techniques SEO avancées pour capter le trafic organique français ; enfin les tests utilisateurs et la maintenance continue afin d’assurer une amélioration itérative. Chaque section propose des actions concrètes que vous pourrez mettre en œuvre dès aujourd’hui.

Analyse préliminaire du marché francophone

La première étape consiste à cartographier le cadre juridique qui régit les jeux d’argent en ligne dans chaque territoire francophone ciblé. En France, l’Autorité Nationale des Jeux (ANJ) impose un agrément strict ainsi que le respect du Code monétaire et financier concernant la lutte contre le blanchiment (AML). Les exigences RGPD obligent quant à elles à obtenir un consentement explicite pour toute collecte de données personnelles et à garantir un droit à l’oubli complet. En Belgique francophone, c’est la Commission des Jeux de Hasard qui délivre les licences ; elle impose également une vérification renforcée des sources de financement ainsi qu’une transparence sur les taux RTP affichés sur le site.

Les joueurs francophones affichent des préférences bien distinctes qui influencent directement le design UX d’un casino digital. Les slots à thème médiéval ou gastronomique dominent les classements français , tandis que les Belges privilégient les machines à sous vidéo avec jackpots progressifs élevés (> 5 M €). Le live dealer connaît un engouement croissant grâce aux tables françaises où l’avantage maison est réduit grâce à « La partage ». En matière de paiement ,les cartes bancaires Visa/Mastercard restent majoritaires (≈ 68 %), suivies par les portefeuilles électroniques comme Skrill ou Neteller (≈ 15 %). Les solutions locales telles que Paylib ou Bancontact sont indispensables pour toucher respectivement la France métropolitaine et la Belgique Wallonie.

  • Carte bancaire (Visa , Mastercard)
  • Portefeuille électronique (Skrill , Neteller)
  • Solution locale française Paylib
  • Solution belge Bancontact
  • Virement bancaire SEPA

Parmi les acteurs déjà bien implantés on retrouve Winamax Casino , Betclic Casino et Unibet France qui ont tous mis en place une localisation poussée tant au niveau du copywriting que du support client multicanal . Leur stratégie repose sur trois piliers : un moteur FAQ enrichi avec des réponses juridiques précises (« quels sont mes droits selon le RGPD ? »), des campagnes e‑mail segmentées selon le pays d’origine du joueur et un programme VIP adapté aux habitudes culturelles (accès prioritaire aux tournois Live Dealer pendant les fêtes françaises). L’analyse comparative montre que ces plateformes affichent un taux de conversion supérieur d’environ vingt‑cinq points percent par rapport aux sites uniquement anglophones .

Site Localisation Taux conversion
Winamax Français complet 7 %
Betclic Français + belge 6 ,5 %
Non‑localisé Anglais seul 4 %

En synthèse ,maîtriser ces dimensions légales et comportementales constitue le socle indispensable avant toute décision technique . Une fois cette cartographie réalisée ,vous pouvez passer à l’architecture multilingue en toute confiance ,sachant que chaque fonctionnalité sera alignée sur les exigences locales et sur les attentes précises des joueurs francophones .

Architecture technique d’une plateforme multilingue

Choix du CMS / stack back‑end compatible i18n

Le critère essentiel lors du choix du CMS est sa prise en charge native ou via modules éprouvés du i18n . Symfony possède son composant Translation intégré , Laravel offre Laravel Localization , tandis que WordPress nécessite WPML ou Polylang pour gérer plusieurs langues sans duplication massive du code source . Drupal Core fournit quantà lui une API complète permettant création automatique « language fallback ». Au niveau infrastructure ,les micro‑services Node.js ou Java Spring Boot peuvent être découpés par domaine fonctionnel tout en partageant une couche commune dédiée aux ressources traduites via API RESTful . Campus2023.Fr a classé ces stacks selon critères tels que facilité déploiement CI/CD , coût licence , communauté active autour des extensions multilingues , offrant ainsi aux opérateurs une vue claire avant décision finale .

Gestion des bases de données et des ressources statiques

Deux approches principales cohabitent : stockage « key/value » dans fichiers JSON/YAML versionnés via Git ou persistance dans tables relationnelles contenant colonnes locale , key , value. La seconde garantit cohérence transactionnelle lorsqu’il s’agit traduire dynamiquement du texte provenant directement du back‑office jeu (description RTP , règles wager). Pour préserver performance sous forte charge promotionnelle ,les traductions sont généralement cachées dans Redis ou Memcached avec TTL courte afin qu’une mise à jour instantanée se propage sans recharger toute l’application . Les assets graphiques statiques doivent être placés dans CDN séparés par répertoire langue (/fr/, /en/ ) afin que Cloudflare serve rapidement images localisées tout en conservant compression WebP optimale . Un pipeline automatisé déclenché depuis GitHub Actions compile automatiquement nouvelles chaînes depuis Phrase ou Lokalise puis pousse vers SFTP CDN après validation QA .

Bonnes pratiques résumées

  • Utiliser toujours fallback vers anglais lorsqu’une clé manque
  • Séparer logique métier / texte UI via services dédiés
  • Versionner toutes traductions dans VCS pour traçabilité
  • Mettre en cache côté serveur + CDN côté client
  • Automatiser déploiement via CI/CD après validation linguistique

Processus d localisation du contenu ludique

Traduction dynamique vs traduction statique des jeux

Les slots classiques fonctionnent souvent avec texte statique intégré au fichier SWF/HTML5 ; ils bénéficient alors d’une traduction statique où chaque libellé est remplacé lors du build initiale . Cette méthode garantit rapidité mais nécessite recompilation complète dès qu’une modification survient . À l’inverse ,les jeux live dealer utilisent flux vidéo où seules superpositions UI sont traduites dynamiquement via WebSocket envoyant JSON contenant libellés adaptés au paramètre locale choisi par l’utilisateur . L’avantage réside dans possibilité mise-à‑jour instantanée sans interruption service , idéal lors d’événements spéciaux comme « Paris Saint‑Germain Night ». Cependant cela implique surcharge réseau supplémentaire qu’il faut compenser par optimisation gzip/brotli .

Adaptation culturelle des visuels & promotions

En France il est interdit tout contenu insinuant gain garanti ; il faut donc reformuler slogans « Jackpot assuré » → « Jackpot potentiel ». De même ,les couleurs rouge/bleu rappelant drapeau national sont souvent privilégiées dans bannières lors du Tournoi Roland Garros afin capitaliser sur affluence sportive locale . Les promotions doivent respecter plafond légal : bonus sans dépôt limité à €30 maximum selon ARJEL . Il convient donc créer variantes graphiques spécifiques : version « EuroMillions Parisien » incluant icônes Tour Eiffel versus version « Bruxelles Jackpot » incorporant Manneken Pis stylisé .

Tableau comparatif types traduction

Type jeu Méthode recommandée Impact performance
Slots classiques Traduction statique Faible latence
Live dealer Traduction dynamique Charge réseau accrue
Tableaux interactifs Mixte (API + cache) Optimisable

Optimisation SEO & acquisition organique ciblée

Le référencement naturel doit être pensé spécifiquement pour chaque variante linguistique afin éviter cannibalisation entre versions FR/BE . Commencez par réaliser une recherche approfondie mots‑clés longue traîne : « meilleur site pari en ligne », « quel site de paris sportif choisir », « bonus roulette sans dépôt FR ». Intégrez ces expressions naturellement dans balises titre , méta description <meta>, balises </p> <h1>–<h³> ainsi qu’au sein du texte enrichi schema.org <code>Game</code> & <code>Offer</code>. Utilisez hreflang=« fr-fr » / hreflang=« fr-be » afin que Google serve correctement la version géographique appropriée au crawler multilingue . </p> <p>Le netlinking doit provenir principalement d’annuaires français fiables tels que <em>Le Guide Casino</em> ou <em>CasinoFrance.net</em> ; Campus2023.Fr fournit régulièrement listes actualisées contenant plusde500 domaines autorisés dont plusieurs spécialisés “meilleur site pari sportif”. Chaque backlink doit être ancré avec texte descriptif (« comparatif meilleur site paris sportifs FR ») plutôt qu’un simple “click here”. Le maillage interne interne doit suivre logique silo : page catégorie “Machines à sous” → sous‑page “Volatility high” → article blog “Stratégies roulette euro”. Cela renforce crawlabilité tout en guidant l’utilisateur vers conversions ciblées comme inscription au bonus €200+. </p> <h4>Checklist SEO FR/BE</h4> <ul> <li>Recherche mots clés longue traîne FR/BE </li> <li>Implémentation hreflang correcte </li> <li>Schema.org Game + Offer enrichi </li> <li>Backlinks provenant annuaires français fiables (<em>Campus202…</em>) </li> <li>Maillage interne siloisé autour thèmes populaires </li> </ul> <h2>Test utilisateur & maintenance continue</h2> <p>Planifier dès maintenant une batterie A/B test auprès panels composés exclusivement d’utilisateurs français & belges afin mesurer impact UI/UX localisée versus version générique . Par exemple comparer taux clics sur bouton “Déposer” lorsqu’il porte libellé « Déposer maintenant » contre « Faire votre dépôt ». Collecter métriques détaillées : temps moyen session FR®, nombre tickets support FR®, taux abandon panier BE® . Ces indicateurs alimentent tableau bord centralisé construit sous PowerBI où chaque KPI possède seuils alertes automatisées via webhook Slack vers équipe produit . </p> <p>Le processus automatisé doit pouvoir pousser rapidement mises-à‑jour linguistiques grâce au pipeline CI/CD décrit précédemment : lorsqu’un traducteur valide nouvelle chaîne dans Phrase ,un job GitLab déclenche build front end puis déploie immédiatement sur environnement staging puis production après validation QA locale réalisée par panel interne Campus202… ? Cette boucle garantit réactivité face aux évolutions réglementaires comme nouvelles limites wagering imposées par ARJEL fin avril prochain. </p> <h2>Conclusion – synthèse & appel à l’action</h2> <p>Nous avons parcouru toutes les étapes nécessaires pour réussir votre localisation : comprendre contraintes légales françaises & belges ; choisir architecture CMS/i18n adaptée ; mettre en place processus traduction dynamique/statique ; adapter visuels selon normes publicitaires ; optimiser SEO local avec mots clés pertinents ; tester continuellement auprès utilisateurs natifs puis maintenir via pipelines automatisés. Chaque phase apporte une valeur mesurable : amélioration moyenne +30 % du taux conversion FR®, réduction moitié temps résolution tickets support FR®. </p> <p>Il est temps maintenant d’appliquer ces recommandations concrètes : lancez votre première phase pilote sur votre plateforme existante en vous appuyant sur Campus2023.Fr comme partenaire référent spécialisé dans l’évaluation objective des meilleurs sites pari sportifs Francophones. Profitez dès aujourd’hui leurs audits détaillés pour valider conformité RGPD & AML puis déployer vos nouvelles pages FR/BE suivant notre feuille‐de‐route technique présentée ci-dessus. Votre succès dépendra désormais autant du code backend que…du mot juste utilisé devant vos futurs joueurs français !</p> </div> </div> <!-- thunk-posts-description end --> </div> <!-- post-content-outer-wrapper end --> </div> <div class="thunk-post-footer"> </div> <!-- thunk-post-footer end --> </article> <div class="thunk-related-links "> <nav class="navigation post-navigation" aria-label="Posts"> <h2 class="screen-reader-text">Post navigation</h2> <div class="nav-links"><div class="nav-previous"><a href="https://pikhome.com/2025/05/05/h1-jackpot-culture-in-italia-i-10-slot-piu-amati-e-le-loro-promo-h1/" rel="prev"><h1>Jackpot Culture in Italia: I 10 Slot più Amati e le Loro Promo</h1></a></div><div class="nav-next"><a href="https://pikhome.com/2025/05/06/guide-complet-du-casino-en-ligne-tout-ce-que-vous-devez-savoir-70/" rel="next">Guide complet du casino en ligne – tout ce que vous devez savoir</a></div></div> </nav> </div> <article class="authorbox"> <div class="thunk-author-bio"> <div class="author-avatar"> <img alt='' src='https://secure.gravatar.com/avatar/59fd25638a5c6d9d4d146c0cdd5ca7903a4a111b2102578baeef7cb56c3fe706?s=110&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/59fd25638a5c6d9d4d146c0cdd5ca7903a4a111b2102578baeef7cb56c3fe706?s=220&d=mm&r=g 2x' class='avatar avatar-110 photo' height='110' width='110' decoding='async'/> </div><!-- .author-avatar --> <div class="author-info"> <h4 class="author-header"> Written by <a href="https://pikhome.com/author/manhbh/" rel="author">manhbh</a> </h4> <div class="author-content"> <p></p> </div><!-- .author-content --> </div><!-- .author-info --> </div> </article><!-- .authorbox --> <article id="comments" class="comments-area"> <div id="respond" class="comment-respond"> <h3 id="reply-title" class="comment-reply-title">Leave a Reply <small><a rel="nofollow" id="cancel-comment-reply-link" href="/2025/05/06/reussir-la-localisation-d-un-casino-en-ligne-guide-technique-complet-pour-les-operateurs-francophones-couvrant-legislation-locale-architecture-multilingue-robuste-traduction-dynamique-ou-statique-des/#respond" style="display:none;">Cancel reply</a></small></h3><form action="https://pikhome.com/wp-comments-post.php" method="post" id="commentform" class="comment-form"><p class="comment-notes"><span id="email-notes">Your email address will not be published.</span> <span class="required-field-message">Required fields are marked <span class="required">*</span></span></p><p class="comment-form-comment"><label for="comment">Comment <span class="required">*</span></label> <textarea id="comment" name="comment" cols="45" rows="8" maxlength="65525" required></textarea></p><p class="comment-form-author"><label for="author">Name <span class="required">*</span></label> <input id="author" name="author" type="text" value="" size="30" maxlength="245" autocomplete="name" required /></p> <p class="comment-form-email"><label for="email">Email <span class="required">*</span></label> <input id="email" name="email" type="email" value="" size="30" maxlength="100" aria-describedby="email-notes" autocomplete="email" required /></p> <p class="comment-form-url"><label for="url">Website</label> <input id="url" name="url" type="url" value="" size="30" maxlength="200" autocomplete="url" /></p> <p class="comment-form-cookies-consent"><input id="wp-comment-cookies-consent" name="wp-comment-cookies-consent" type="checkbox" value="yes" /> <label for="wp-comment-cookies-consent">Save my name, email, and website in this browser for the next time I comment.</label></p> <p class="form-submit"><input name="submit" type="submit" id="submit" class="submit" value="Post Comment" /> <input type='hidden' name='comment_post_ID' value='65185' id='comment_post_ID' /> <input type='hidden' name='comment_parent' id='comment_parent' value='0' /> </p></form> </div><!-- #respond --> </article><!-- #comments --> </div> <!-- end primary-content-wrap--> </div> <!-- end primary primary-content-area--> <div id="sidebar-primary" class="sidebar-content-area "> <div class="sidebar-main"> <div id="block-2" class="widget widget_block widget_search"><div class="open-shop-widget-content"><form role="search" method="get" action="https://pikhome.com/" class="wp-block-search__button-outside wp-block-search__text-button wp-block-search" ><label class="wp-block-search__label" for="wp-block-search__input-1" >Search</label><div class="wp-block-search__inside-wrapper" ><input class="wp-block-search__input" id="wp-block-search__input-1" placeholder="" value="" type="search" name="s" required /><button aria-label="Search" class="wp-block-search__button wp-element-button" type="submit" >Search</button></div></form></div></div><div id="woocommerce_products-3" class="widget woocommerce widget_products"><div class="open-shop-widget-content"><h2 class="widget-title">On Sale</h2><ul class="product_list_widget"><li> <a href="https://pikhome.com/product/nerf-air-goal-instant-blow-up-soccer-goal-plug-in-and-inflates-in-10-seconds/"> <img width="320" height="320" src="https://pikhome.com/wp-content/uploads/2025/12/nerf-air-goal-instant-blow-up-soccer-goal-plug-in-and-inflates-in-10-seconds-10-320x320.jpeg" class="attachment-woocommerce_thumbnail size-woocommerce_thumbnail" alt="" decoding="async" loading="lazy" srcset="https://pikhome.com/wp-content/uploads/2025/12/nerf-air-goal-instant-blow-up-soccer-goal-plug-in-and-inflates-in-10-seconds-10-320x320.jpeg 320w, https://pikhome.com/wp-content/uploads/2025/12/nerf-air-goal-instant-blow-up-soccer-goal-plug-in-and-inflates-in-10-seconds-10-300x300.jpeg 300w, https://pikhome.com/wp-content/uploads/2025/12/nerf-air-goal-instant-blow-up-soccer-goal-plug-in-and-inflates-in-10-seconds-10-1024x1024.jpeg 1024w, https://pikhome.com/wp-content/uploads/2025/12/nerf-air-goal-instant-blow-up-soccer-goal-plug-in-and-inflates-in-10-seconds-10-150x150.jpeg 150w, https://pikhome.com/wp-content/uploads/2025/12/nerf-air-goal-instant-blow-up-soccer-goal-plug-in-and-inflates-in-10-seconds-10-768x768.jpeg 768w, https://pikhome.com/wp-content/uploads/2025/12/nerf-air-goal-instant-blow-up-soccer-goal-plug-in-and-inflates-in-10-seconds-10-600x600.jpeg 600w, https://pikhome.com/wp-content/uploads/2025/12/nerf-air-goal-instant-blow-up-soccer-goal-plug-in-and-inflates-in-10-seconds-10-100x100.jpeg 100w, https://pikhome.com/wp-content/uploads/2025/12/nerf-air-goal-instant-blow-up-soccer-goal-plug-in-and-inflates-in-10-seconds-10-48x48.jpeg 48w, https://pikhome.com/wp-content/uploads/2025/12/nerf-air-goal-instant-blow-up-soccer-goal-plug-in-and-inflates-in-10-seconds-10.jpeg 1080w" sizes="auto, (max-width: 320px) 100vw, 320px" /> <span class="product-title">NERF Air Goal- Instant Blow Up Soccer Goal - Plug In and Inflates in 10 Seconds</span> </a> <del aria-hidden="true"><span class="woocommerce-Price-amount amount"><bdi><span class="woocommerce-Price-currencySymbol">$</span>48.99</bdi></span></del> <ins><span class="woocommerce-Price-amount amount"><bdi><span class="woocommerce-Price-currencySymbol">$</span>38.70</bdi></span></ins> </li> <li> <a href="https://pikhome.com/product/mambobaby-baby-pool-float-with-canopy-pink/"> <img width="320" height="320" src="https://pikhome.com/wp-content/uploads/2025/12/mambobaby-baby-pool-float-with-canopy-pink-8-320x320.jpeg" class="attachment-woocommerce_thumbnail size-woocommerce_thumbnail" alt="" decoding="async" loading="lazy" srcset="https://pikhome.com/wp-content/uploads/2025/12/mambobaby-baby-pool-float-with-canopy-pink-8-320x320.jpeg 320w, https://pikhome.com/wp-content/uploads/2025/12/mambobaby-baby-pool-float-with-canopy-pink-8-300x300.jpeg 300w, https://pikhome.com/wp-content/uploads/2025/12/mambobaby-baby-pool-float-with-canopy-pink-8-1024x1024.jpeg 1024w, https://pikhome.com/wp-content/uploads/2025/12/mambobaby-baby-pool-float-with-canopy-pink-8-150x150.jpeg 150w, https://pikhome.com/wp-content/uploads/2025/12/mambobaby-baby-pool-float-with-canopy-pink-8-768x768.jpeg 768w, https://pikhome.com/wp-content/uploads/2025/12/mambobaby-baby-pool-float-with-canopy-pink-8-600x600.jpeg 600w, https://pikhome.com/wp-content/uploads/2025/12/mambobaby-baby-pool-float-with-canopy-pink-8-100x100.jpeg 100w, https://pikhome.com/wp-content/uploads/2025/12/mambobaby-baby-pool-float-with-canopy-pink-8-48x48.jpeg 48w, https://pikhome.com/wp-content/uploads/2025/12/mambobaby-baby-pool-float-with-canopy-pink-8.jpeg 1080w" sizes="auto, (max-width: 320px) 100vw, 320px" /> <span class="product-title">Mambobaby Baby Pool Float with Canopy- Pink</span> </a> <del aria-hidden="true"><span class="woocommerce-Price-amount amount"><bdi><span class="woocommerce-Price-currencySymbol">$</span>63.96</bdi></span></del> <ins><span class="woocommerce-Price-amount amount"><bdi><span class="woocommerce-Price-currencySymbol">$</span>46.69</bdi></span></ins> </li> <li> <a href="https://pikhome.com/product/adventure-force-tactical-strike-boxer-pro-ultimate-pro-flywheel-full-auto-motorized-belt-blaster-shoots-up-to-150-ft-55-piece-pro-blaster-set-up-to-6-rounds-per-second-14/"> <img width="320" height="320" src="https://pikhome.com/wp-content/uploads/2025/12/adventure-force-tactical-strike-boxer-pro-ultimate-pro-flywheel-full-auto-motorized-belt-blaster-shoots-up-to-150-ft-55-piece-pro-blaster-set-up-to-6-rounds-per-second-14-11-320x320.jpg" class="attachment-woocommerce_thumbnail size-woocommerce_thumbnail" alt="" decoding="async" loading="lazy" srcset="https://pikhome.com/wp-content/uploads/2025/12/adventure-force-tactical-strike-boxer-pro-ultimate-pro-flywheel-full-auto-motorized-belt-blaster-shoots-up-to-150-ft-55-piece-pro-blaster-set-up-to-6-rounds-per-second-14-11-320x320.jpg 320w, https://pikhome.com/wp-content/uploads/2025/12/adventure-force-tactical-strike-boxer-pro-ultimate-pro-flywheel-full-auto-motorized-belt-blaster-shoots-up-to-150-ft-55-piece-pro-blaster-set-up-to-6-rounds-per-second-14-11-300x300.jpg 300w, https://pikhome.com/wp-content/uploads/2025/12/adventure-force-tactical-strike-boxer-pro-ultimate-pro-flywheel-full-auto-motorized-belt-blaster-shoots-up-to-150-ft-55-piece-pro-blaster-set-up-to-6-rounds-per-second-14-11-1024x1024.jpg 1024w, https://pikhome.com/wp-content/uploads/2025/12/adventure-force-tactical-strike-boxer-pro-ultimate-pro-flywheel-full-auto-motorized-belt-blaster-shoots-up-to-150-ft-55-piece-pro-blaster-set-up-to-6-rounds-per-second-14-11-150x150.jpg 150w, https://pikhome.com/wp-content/uploads/2025/12/adventure-force-tactical-strike-boxer-pro-ultimate-pro-flywheel-full-auto-motorized-belt-blaster-shoots-up-to-150-ft-55-piece-pro-blaster-set-up-to-6-rounds-per-second-14-11-768x768.jpg 768w, https://pikhome.com/wp-content/uploads/2025/12/adventure-force-tactical-strike-boxer-pro-ultimate-pro-flywheel-full-auto-motorized-belt-blaster-shoots-up-to-150-ft-55-piece-pro-blaster-set-up-to-6-rounds-per-second-14-11-600x600.jpg 600w, https://pikhome.com/wp-content/uploads/2025/12/adventure-force-tactical-strike-boxer-pro-ultimate-pro-flywheel-full-auto-motorized-belt-blaster-shoots-up-to-150-ft-55-piece-pro-blaster-set-up-to-6-rounds-per-second-14-11-100x100.jpg 100w, https://pikhome.com/wp-content/uploads/2025/12/adventure-force-tactical-strike-boxer-pro-ultimate-pro-flywheel-full-auto-motorized-belt-blaster-shoots-up-to-150-ft-55-piece-pro-blaster-set-up-to-6-rounds-per-second-14-11-48x48.jpg 48w, https://pikhome.com/wp-content/uploads/2025/12/adventure-force-tactical-strike-boxer-pro-ultimate-pro-flywheel-full-auto-motorized-belt-blaster-shoots-up-to-150-ft-55-piece-pro-blaster-set-up-to-6-rounds-per-second-14-11.jpg 1080w" sizes="auto, (max-width: 320px) 100vw, 320px" /> <span class="product-title">Adventure Force Tactical Strike Boxer Pro Ultimate Pro Flywheel Full-Auto Motorized Belt Blaster, Shoots Up to 150 FT, 55-Piece Pro Blaster Set up to 6 Rounds per Second, 14+</span> </a> <del aria-hidden="true"><span class="woocommerce-Price-amount amount"><bdi><span class="woocommerce-Price-currencySymbol">$</span>59.00</bdi></span></del> <ins><span class="woocommerce-Price-amount amount"><bdi><span class="woocommerce-Price-currencySymbol">$</span>44.25</bdi></span></ins> </li> <li> <a href="https://pikhome.com/product/mambobaby-self-inflating-baby-pool-float-with-canopy-green/"> <img width="320" height="320" src="https://pikhome.com/wp-content/uploads/2025/12/mambobaby-self-inflating-baby-pool-float-with-canopy-green-7-320x320.jpeg" class="attachment-woocommerce_thumbnail size-woocommerce_thumbnail" alt="" decoding="async" loading="lazy" srcset="https://pikhome.com/wp-content/uploads/2025/12/mambobaby-self-inflating-baby-pool-float-with-canopy-green-7-320x320.jpeg 320w, https://pikhome.com/wp-content/uploads/2025/12/mambobaby-self-inflating-baby-pool-float-with-canopy-green-7-300x300.jpeg 300w, https://pikhome.com/wp-content/uploads/2025/12/mambobaby-self-inflating-baby-pool-float-with-canopy-green-7-1024x1024.jpeg 1024w, https://pikhome.com/wp-content/uploads/2025/12/mambobaby-self-inflating-baby-pool-float-with-canopy-green-7-150x150.jpeg 150w, https://pikhome.com/wp-content/uploads/2025/12/mambobaby-self-inflating-baby-pool-float-with-canopy-green-7-768x768.jpeg 768w, https://pikhome.com/wp-content/uploads/2025/12/mambobaby-self-inflating-baby-pool-float-with-canopy-green-7-600x600.jpeg 600w, https://pikhome.com/wp-content/uploads/2025/12/mambobaby-self-inflating-baby-pool-float-with-canopy-green-7-100x100.jpeg 100w, https://pikhome.com/wp-content/uploads/2025/12/mambobaby-self-inflating-baby-pool-float-with-canopy-green-7-48x48.jpeg 48w, https://pikhome.com/wp-content/uploads/2025/12/mambobaby-self-inflating-baby-pool-float-with-canopy-green-7.jpeg 1080w" sizes="auto, (max-width: 320px) 100vw, 320px" /> <span class="product-title">Mambobaby Self Inflating Baby Pool Float with Canopy- Green</span> </a> <del aria-hidden="true"><span class="woocommerce-Price-amount amount"><bdi><span class="woocommerce-Price-currencySymbol">$</span>59.99</bdi></span></del> <ins><span class="woocommerce-Price-amount amount"><bdi><span class="woocommerce-Price-currencySymbol">$</span>45.59</bdi></span></ins> </li> <li> <a href="https://pikhome.com/product/mambobaby-self-inflating-baby-pool-float-with-canopy-blue/"> <img width="320" height="320" src="https://pikhome.com/wp-content/uploads/2025/12/mambobaby-self-inflating-baby-pool-float-with-canopy-blue-7-320x320.jpeg" class="attachment-woocommerce_thumbnail size-woocommerce_thumbnail" alt="" decoding="async" loading="lazy" srcset="https://pikhome.com/wp-content/uploads/2025/12/mambobaby-self-inflating-baby-pool-float-with-canopy-blue-7-320x320.jpeg 320w, https://pikhome.com/wp-content/uploads/2025/12/mambobaby-self-inflating-baby-pool-float-with-canopy-blue-7-300x300.jpeg 300w, https://pikhome.com/wp-content/uploads/2025/12/mambobaby-self-inflating-baby-pool-float-with-canopy-blue-7-1024x1024.jpeg 1024w, https://pikhome.com/wp-content/uploads/2025/12/mambobaby-self-inflating-baby-pool-float-with-canopy-blue-7-150x150.jpeg 150w, https://pikhome.com/wp-content/uploads/2025/12/mambobaby-self-inflating-baby-pool-float-with-canopy-blue-7-768x768.jpeg 768w, https://pikhome.com/wp-content/uploads/2025/12/mambobaby-self-inflating-baby-pool-float-with-canopy-blue-7-600x600.jpeg 600w, https://pikhome.com/wp-content/uploads/2025/12/mambobaby-self-inflating-baby-pool-float-with-canopy-blue-7-100x100.jpeg 100w, https://pikhome.com/wp-content/uploads/2025/12/mambobaby-self-inflating-baby-pool-float-with-canopy-blue-7-48x48.jpeg 48w, https://pikhome.com/wp-content/uploads/2025/12/mambobaby-self-inflating-baby-pool-float-with-canopy-blue-7.jpeg 1080w" sizes="auto, (max-width: 320px) 100vw, 320px" /> <span class="product-title">Mambobaby Self Inflating Baby Pool Float with Canopy- Blue</span> </a> <del aria-hidden="true"><span class="woocommerce-Price-amount amount"><bdi><span class="woocommerce-Price-currencySymbol">$</span>69.95</bdi></span></del> <ins><span class="woocommerce-Price-amount amount"><bdi><span class="woocommerce-Price-currencySymbol">$</span>50.36</bdi></span></ins> </li> </ul></div></div> </div> <!-- sidebar-main End --> </div> <!-- sidebar-primary End --> <!-- end sidebar-primary sidebar-content-area--> </div> <!-- end main-area --> </div> </div> <!-- end content-wrap --> </div> <!-- end content page-content --> <footer> <div class="top-footer"> <div class="container"> <div class="top-footer-bar thnk-col-1"> <div class="top-footer-col1"> <div class="content-widget"> <div id="media_image-7" class="widget widget_media_image"><img width="247" height="80" src="https://pikhome.com/wp-content/uploads/2022/03/paypal-1.png" class="image wp-image-32909 attachment-full size-full" alt="" style="max-width: 100%; height: auto;" decoding="async" loading="lazy" srcset="https://pikhome.com/wp-content/uploads/2022/03/paypal-1.png 247w, https://pikhome.com/wp-content/uploads/2022/03/paypal-1-48x16.png 48w" sizes="auto, (max-width: 247px) 100vw, 247px" /></div> </div> </div> </div> <!-- end top-footer-bar --> </div> </div> <div class="widget-footer"> <div class="container"> <div class="widget-footer-wrap thnk-col-4"> <div class="widget-footer-col1"> <div id="nav_menu-3" class="widget widget_nav_menu"><h2 class="widget-title">Customer Services</h2><div class="menu-footer-container"><ul id="menu-footer" class="menu"><li id="menu-item-32911" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-32911"><a href="https://pikhome.com/about-us/">About Us</a></li> <li id="menu-item-32912" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-32912"><a href="https://pikhome.com/contact-us/">Contact Us</a></li> <li id="menu-item-32913" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-32913"><a href="https://pikhome.com/my-account/">My account</a></li> <li id="menu-item-32914" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-32914"><a href="https://pikhome.com/order-tracking/">Order Tracking</a></li> </ul></div></div></div> <div class="widget-footer-col2"><div id="nav_menu-5" class="widget widget_nav_menu"><h2 class="widget-title">Policies</h2><div class="menu-policies-container"><ul id="menu-policies" class="menu"><li id="menu-item-63549" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-63549"><a href="https://pikhome.com/terms-and-conditions/">Terms and Conditions</a></li> <li id="menu-item-63552" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-63552"><a href="https://pikhome.com/privacy-policy-2/">Privacy Policy</a></li> <li id="menu-item-63550" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-63550"><a href="https://pikhome.com/refund-policy/">Refund Policy</a></li> <li id="menu-item-63551" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-63551"><a href="https://pikhome.com/shipping-policy/">Shipping policy</a></li> </ul></div></div></div> <div class="widget-footer-col3"> </div> <div class="widget-footer-col4"><div id="custom_html-1" class="widget_text widget widget_custom_html"><h2 class="widget-title">Contact Details</h2><div class="textwidget custom-html-widget"><p>Address: 4202 Gnarl Dr, Austin, TX 78731</p><p>E-mail : info@pikhome.com</p></div></div> </div> </div> </div> </div> <div class="below-footer"> <div class="container"> <div class="below-footer-bar thnk-col-1"> <div class="below-footer-col1"> <p class="footer-copyright">© 2026 <a href="https://pikhome.com/">PiKHome</a> <span class="powered-by-wordpress"> </span> </p><!-- .footer-copyright --> </div> </div> </div> </div> </footer> <!-- end footer --> </div> <!-- end openshop-site --> <script type="speculationrules"> {"prefetch":[{"source":"document","where":{"and":[{"href_matches":"/*"},{"not":{"href_matches":["/wp-*.php","/wp-admin/*","/wp-content/uploads/*","/wp-content/*","/wp-content/plugins/*","/wp-content/themes/open-shop/*","/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]} </script> <div id="3" class="taiowc-wrap taiowc-slide-right cart_fixed_1"> <a class="taiowc-content" href="#"> <h4>Cart</h4> <div class="taiowc-cart-item"> <div class="taiowc-icon"> <svg xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMid meet" viewBox="0 0 160 160" ><path d="m132 1340c-35-15-48-54-28-85 15-23 22-25 96-25h79l14-47c8-27 20-73 27-103s25-102 40-160 40-157 55-220c24-99 33-120 61-147 31-30 39-33 96-33h63l-32-20c-117-71-54-263 81-246 76 9 135 82 122 151-8 39-49 93-80 105-13 5 56 9 169 9 189 1 190 1 160-18-36-21-63-60-71-100-7-35 26-104 61-127 65-43 152-20 193 51 36 63 15 135-53 176l-30 19h60c92 0 117 25 149 145 8 33 31 116 49 185 19 69 44 161 56 205s24 88 27 98c5 16-8 17-170 17h-175l-3 42c-3 36-9 47-46 75-50 38-115 45-157 17-22-14-26-14-47 0-74 52-208-18-208-109 0-25-1-25-90-25-49 0-90-3-90-7 0-5 6-30 13-58l13-50 98-5c87-4 99-7 109-27 15-26 118-118 156-138 26-13 31-12 77 19 28 19 73 59 101 90l52 56h106 107l-4-27c-3-16-14-62-26-103-11-41-32-120-47-174-14-55-28-103-31-108-3-4-157-8-343-8h-338l-81 327c-90 358-93 366-168 383-49 12-142 12-172 0zm762-140c33-29 35-30 48-12 32 45 89 54 113 18 27-41 4-100-64-168-32-32-63-58-69-58-20 0-111 96-127 133-42 100 21 155 99 87z" transform="matrix(.1 0 0 -.1 0 160)"/></svg> </div> </div> </a> <div class="taiowc-cart-model"> <div class="taiowc-cart-model-wrap"> <div class="taiowc-cart-model-header"> <div class="cart-heading"> <svg xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMid meet" viewBox="0 0 160 160" ><path d="m132 1340c-35-15-48-54-28-85 15-23 22-25 96-25h79l14-47c8-27 20-73 27-103s25-102 40-160 40-157 55-220c24-99 33-120 61-147 31-30 39-33 96-33h63l-32-20c-117-71-54-263 81-246 76 9 135 82 122 151-8 39-49 93-80 105-13 5 56 9 169 9 189 1 190 1 160-18-36-21-63-60-71-100-7-35 26-104 61-127 65-43 152-20 193 51 36 63 15 135-53 176l-30 19h60c92 0 117 25 149 145 8 33 31 116 49 185 19 69 44 161 56 205s24 88 27 98c5 16-8 17-170 17h-175l-3 42c-3 36-9 47-46 75-50 38-115 45-157 17-22-14-26-14-47 0-74 52-208-18-208-109 0-25-1-25-90-25-49 0-90-3-90-7 0-5 6-30 13-58l13-50 98-5c87-4 99-7 109-27 15-26 118-118 156-138 26-13 31-12 77 19 28 19 73 59 101 90l52 56h106 107l-4-27c-3-16-14-62-26-103-11-41-32-120-47-174-14-55-28-103-31-108-3-4-157-8-343-8h-338l-81 327c-90 358-93 366-168 383-49 12-142 12-172 0zm762-140c33-29 35-30 48-12 32 45 89 54 113 18 27-41 4-100-64-168-32-32-63-58-69-58-20 0-111 96-127 133-42 100 21 155 99 87z" transform="matrix(.1 0 0 -.1 0 160)"/></svg> <h4>Cart</h4> <a class="taiowc-cart-close"></a> </div> </div> <div class="taiowc-cart-model-body"> <p class="woocommerce-mini-cart__empty-message">Your Cart is Empty</p> <a href="https://pikhome.com/" class="woocommerce-back-to-shop">Back To Shop</a> </div> <div class="taiowc-cart-model-footer"> <div class="cart-total"> <span class="taiowc-payment-title">Payment Details</span> <div class="taiowc-total-wrap"> <div class="taiowc-subtotal"> <span class="taiowc-label">Sub Total</span> <span class="taiowc-value"><span class="woocommerce-Price-amount amount"><bdi><span class="woocommerce-Price-currencySymbol">$</span>0.00</bdi></span></span> </div> </div> </div> <div class="cart-button"> <p class="buttons normal"> <a href="https://pikhome.com/cart/" class="button wc-forward">View cart</a><a href="https://pikhome.com/checkout/" class="button checkout wc-forward">Checkout</a> </p> </div> </div> </div> <div class="taiowc-notice-box"> <span class="taiowc-notice"></span> </div> </div> </div><div class="open-shop-mobile-menu-wrapper"></div><div class="thnk-quick-view-bg"><div class="thnk-quick-view-loader blockOverlay"> </div></div> <div id="thnk-quick-view-modal"> <div class="thnk-content-main-wrapper"><!-- --><div class="thnk-content-main"> <div class="thnk-lightbox-content"> <div class="thnk-content-main-head"> <a href="#" id="thnk-quick-view-close" class="thnk-quick-view-close-btn"></a> </div> <div id="thnk-quick-view-content" class="woocommerce single-product"></div> </div> </div> </div> </div> <script type="text/html" id="tmpl-media-frame"> <div class="media-frame-title" id="media-frame-title"></div> <h2 class="media-frame-menu-heading">Actions</h2> <button type="button" class="button button-link media-frame-menu-toggle" aria-expanded="false"> Menu <span class="dashicons dashicons-arrow-down" aria-hidden="true"></span> </button> <div class="media-frame-menu"></div> <div class="media-frame-tab-panel"> <div class="media-frame-router"></div> <div class="media-frame-content"></div> </div> <h2 class="media-frame-actions-heading screen-reader-text"> Selected media actions </h2> <div class="media-frame-toolbar"></div> <div class="media-frame-uploader"></div> </script> <script type="text/html" id="tmpl-media-modal"> <div id="wp-media-modal" tabindex="0" class="media-modal wp-core-ui" role="dialog" aria-labelledby="media-frame-title"> <# if ( data.hasCloseButton ) { #> <button type="button" class="media-modal-close"><span class="media-modal-icon" aria-hidden="true"></span><span class="screen-reader-text"> Close dialog </span></button> <# } #> <div class="media-modal-content" role="document"></div> </div> <div class="media-modal-backdrop"></div> </script> <script type="text/html" id="tmpl-uploader-window"> <div class="uploader-window-content"> <div class="uploader-editor-title">Drop files to upload</div> </div> </script> <script type="text/html" id="tmpl-uploader-editor"> <div class="uploader-editor-content"> <div class="uploader-editor-title">Drop files to upload</div> </div> </script> <script type="text/html" id="tmpl-uploader-inline"> <# var messageClass = data.message ? 'has-upload-message' : 'no-upload-message'; #> <# if ( data.canClose ) { #> <button class="close dashicons dashicons-no"><span class="screen-reader-text"> Close uploader </span></button> <# } #> <div class="uploader-inline-content {{ messageClass }}"> <# if ( data.message ) { #> <h2 class="upload-message">{{ data.message }}</h2> <# } #> <div class="upload-ui"> <h2 class="upload-instructions drop-instructions">Drop files to upload</h2> <p class="upload-instructions drop-instructions">or</p> <button type="button" class="browser button button-hero" aria-describedby="post-upload-info">Select Files</button> </div> <div class="upload-inline-status"></div> <div class="post-upload-ui" id="post-upload-info"> <p class="max-upload-size"> Maximum upload file size: 3 GB. </p> <# if ( data.suggestedWidth && data.suggestedHeight ) { #> <p class="suggested-dimensions"> Suggested image dimensions: {{data.suggestedWidth}} by {{data.suggestedHeight}} pixels. </p> <# } #> </div> </div> </script> <script type="text/html" id="tmpl-media-library-view-switcher"> <a href="https://pikhome.com/wp-admin/upload.php?mode=list" class="view-list"> <span class="screen-reader-text"> List view </span> </a> <a href="https://pikhome.com/wp-admin/upload.php?mode=grid" class="view-grid current" aria-current="page"> <span class="screen-reader-text"> Grid view </span> </a> </script> <script type="text/html" id="tmpl-uploader-status"> <h2>Uploading</h2> <div class="media-progress-bar"><div></div></div> <div class="upload-details"> <span class="upload-count"> <span class="upload-index"></span> / <span class="upload-total"></span> </span> <span class="upload-detail-separator">–</span> <span class="upload-filename"></span> </div> <div class="upload-errors"></div> <button type="button" class="button upload-dismiss-errors">Dismiss errors</button> </script> <script type="text/html" id="tmpl-uploader-status-error"> <span class="upload-error-filename word-wrap-break-word">{{{ data.filename }}}</span> <span class="upload-error-message">{{ data.message }}</span> </script> <script type="text/html" id="tmpl-edit-attachment-frame"> <div class="edit-media-header"> <button class="left dashicons"<# if ( ! data.hasPrevious ) { #> disabled<# } #>><span class="screen-reader-text">Edit previous media item</span></button> <button class="right dashicons"<# if ( ! data.hasNext ) { #> disabled<# } #>><span class="screen-reader-text">Edit next media item</span></button> <button type="button" class="media-modal-close"><span class="media-modal-icon" aria-hidden="true"></span><span class="screen-reader-text">Close dialog</span></button> </div> <div class="media-frame-title"></div> <div class="media-frame-content"></div> </script> <script type="text/html" id="tmpl-attachment-details-two-column"> <div class="attachment-media-view {{ data.orientation }}"> <h2 class="screen-reader-text">Attachment Preview</h2> <div class="thumbnail thumbnail-{{ data.type }}"> <# if ( data.uploading ) { #> <div class="media-progress-bar"><div></div></div> <# } else if ( data.sizes && data.sizes.full ) { #> <img class="details-image" src="{{ data.sizes.full.url }}" draggable="false" alt="" /> <# } else if ( data.sizes && data.sizes.large ) { #> <img class="details-image" src="{{ data.sizes.large.url }}" draggable="false" alt="" /> <# } else if ( -1 === jQuery.inArray( data.type, [ 'audio', 'video' ] ) ) { #> <img class="details-image icon" src="{{ data.icon }}" draggable="false" alt="" /> <# } #> <# if ( 'audio' === data.type ) { #> <div class="wp-media-wrapper wp-audio"> <audio style="visibility: hidden" controls class="wp-audio-shortcode" width="100%" preload="none"> <source type="{{ data.mime }}" src="{{ data.url }}" /> </audio> </div> <# } else if ( 'video' === data.type ) { var w_rule = ''; if ( data.width ) { w_rule = 'width: ' + data.width + 'px;'; } else if ( wp.media.view.settings.contentWidth ) { w_rule = 'width: ' + wp.media.view.settings.contentWidth + 'px;'; } #> <div style="{{ w_rule }}" class="wp-media-wrapper wp-video"> <video controls="controls" class="wp-video-shortcode" preload="metadata" <# if ( data.width ) { #>width="{{ data.width }}"<# } #> <# if ( data.height ) { #>height="{{ data.height }}"<# } #> <# if ( data.image && data.image.src !== data.icon ) { #>poster="{{ data.image.src }}"<# } #>> <source type="{{ data.mime }}" src="{{ data.url }}" /> </video> </div> <# } #> <div class="attachment-actions"> <# if ( 'image' === data.type && ! data.uploading && data.sizes && data.can.save ) { #> <button type="button" class="button edit-attachment">Edit Image</button> <# } else if ( 'pdf' === data.subtype && data.sizes ) { #> <p>Document Preview</p> <# } #> </div> </div> </div> <div class="attachment-info"> <span class="settings-save-status" role="status"> <span class="spinner"></span> <span class="saved">Saved.</span> </span> <div class="details"> <h2 class="screen-reader-text"> Details </h2> <div class="uploaded"><strong>Uploaded on:</strong> {{ data.dateFormatted }}</div> <div class="uploaded-by word-wrap-break-word"> <strong>Uploaded by:</strong> <# if ( data.authorLink ) { #> <a href="{{ data.authorLink }}">{{ data.authorName }}</a> <# } else { #> {{ data.authorName }} <# } #> </div> <# if ( data.uploadedToTitle ) { #> <div class="uploaded-to"> <strong>Uploaded to:</strong> <# if ( data.uploadedToLink ) { #> <a href="{{ data.uploadedToLink }}">{{ data.uploadedToTitle }}</a> <# } else { #> {{ data.uploadedToTitle }} <# } #> </div> <# } #> <div class="filename"><strong>File name:</strong> {{ data.filename }}</div> <div class="file-type"><strong>File type:</strong> {{ data.mime }}</div> <div class="file-size"><strong>File size:</strong> {{ data.filesizeHumanReadable }}</div> <# if ( 'image' === data.type && ! data.uploading ) { #> <# if ( data.width && data.height ) { #> <div class="dimensions"><strong>Dimensions:</strong> {{ data.width }} by {{ data.height }} pixels </div> <# } #> <# if ( data.originalImageURL && data.originalImageName ) { #> <div class="word-wrap-break-word"> <strong>Original image:</strong> <a href="{{ data.originalImageURL }}">{{data.originalImageName}}</a> </div> <# } #> <# } #> <# if ( data.fileLength && data.fileLengthHumanReadable ) { #> <div class="file-length"><strong>Length:</strong> <span aria-hidden="true">{{ data.fileLengthHumanReadable }}</span> <span class="screen-reader-text">{{ data.fileLengthHumanReadable }}</span> </div> <# } #> <# if ( 'audio' === data.type && data.meta.bitrate ) { #> <div class="bitrate"> <strong>Bitrate:</strong> {{ Math.round( data.meta.bitrate / 1000 ) }}kb/s <# if ( data.meta.bitrate_mode ) { #> {{ ' ' + data.meta.bitrate_mode.toUpperCase() }} <# } #> </div> <# } #> <# if ( data.mediaStates ) { #> <div class="media-states"><strong>Used as:</strong> {{ data.mediaStates }}</div> <# } #> <div class="compat-meta"> <# if ( data.compat && data.compat.meta ) { #> {{{ data.compat.meta }}} <# } #> </div> </div> <div class="settings"> <# var maybeReadOnly = data.can.save || data.allowLocalEdits ? '' : 'readonly'; #> <# if ( 'image' === data.type ) { #> <span class="setting alt-text has-description" data-setting="alt"> <label for="attachment-details-two-column-alt-text" class="name">Alternative Text</label> <textarea id="attachment-details-two-column-alt-text" aria-describedby="alt-text-description" {{ maybeReadOnly }}>{{ data.alt }}</textarea> </span> <p class="description" id="alt-text-description"><a href="https://www.w3.org/WAI/tutorials/images/decision-tree/" target="_blank">Learn how to describe the purpose of the image<span class="screen-reader-text"> (opens in a new tab)</span><span aria-hidden="true" class="dashicons dashicons-external"></span></a>. Leave empty if the image is purely decorative.</p> <# } #> <span class="setting" data-setting="title"> <label for="attachment-details-two-column-title" class="name">Title</label> <input type="text" id="attachment-details-two-column-title" value="{{ data.title }}" {{ maybeReadOnly }} /> </span> <# if ( 'audio' === data.type ) { #> <span class="setting" data-setting="artist"> <label for="attachment-details-two-column-artist" class="name">Artist</label> <input type="text" id="attachment-details-two-column-artist" value="{{ data.artist || data.meta.artist || '' }}" /> </span> <span class="setting" data-setting="album"> <label for="attachment-details-two-column-album" class="name">Album</label> <input type="text" id="attachment-details-two-column-album" value="{{ data.album || data.meta.album || '' }}" /> </span> <# } #> <span class="setting" data-setting="caption"> <label for="attachment-details-two-column-caption" class="name">Caption</label> <textarea id="attachment-details-two-column-caption" {{ maybeReadOnly }}>{{ data.caption }}</textarea> </span> <span class="setting" data-setting="description"> <label for="attachment-details-two-column-description" class="name">Description</label> <textarea id="attachment-details-two-column-description" {{ maybeReadOnly }}>{{ data.description }}</textarea> </span> <span class="setting" data-setting="url"> <label for="attachment-details-two-column-copy-link" class="name">File URL:</label> <input type="text" class="attachment-details-copy-link ltr" id="attachment-details-two-column-copy-link" value="{{ data.url }}" readonly /> <span class="copy-to-clipboard-container"> <button type="button" class="button button-small copy-attachment-url" data-clipboard-target="#attachment-details-two-column-copy-link">Copy URL to clipboard</button> <span class="success hidden" aria-hidden="true">Copied!</span> </span> </span> <div class="attachment-compat"></div> </div> <div class="actions"> <# if ( data.link ) { #> <a class="view-attachment" href="{{ data.link }}">View attachment page</a> <# } #> <# if ( data.can.save ) { #> <# if ( data.link ) { #> <span class="links-separator">|</span> <# } #> <a href="{{ data.editLink }}">Edit more details</a> <# } #> <# if ( data.can.save && data.link ) { #> <span class="links-separator">|</span> <a href="{{ data.url }}" download>Download file</a> <# } #> <# if ( ! data.uploading && data.can.remove ) { #> <# if ( data.link || data.can.save ) { #> <span class="links-separator">|</span> <# } #> <button type="button" class="button-link delete-attachment">Delete permanently</button> <# } #> </div> </div> </script> <script type="text/html" id="tmpl-attachment"> <div class="attachment-preview js--select-attachment type-{{ data.type }} subtype-{{ data.subtype }} {{ data.orientation }}"> <div class="thumbnail"> <# if ( data.uploading ) { #> <div class="media-progress-bar"><div style="width: {{ data.percent }}%"></div></div> <# } else if ( 'image' === data.type && data.size && data.size.url ) { #> <div class="centered"> <img src="{{ data.size.url }}" draggable="false" alt="" /> </div> <# } else { #> <div class="centered"> <# if ( data.image && data.image.src && data.image.src !== data.icon ) { #> <img src="{{ data.image.src }}" class="thumbnail" draggable="false" alt="" /> <# } else if ( data.sizes ) { if ( data.sizes.medium ) { #> <img src="{{ data.sizes.medium.url }}" class="thumbnail" draggable="false" alt="" /> <# } else { #> <img src="{{ data.sizes.full.url }}" class="thumbnail" draggable="false" alt="" /> <# } #> <# } else { #> <img src="{{ data.icon }}" class="icon" draggable="false" alt="" /> <# } #> </div> <div class="filename"> <div>{{ data.filename }}</div> </div> <# } #> </div> <# if ( data.buttons.close ) { #> <button type="button" class="button-link attachment-close"><span class="media-modal-icon" aria-hidden="true"></span><span class="screen-reader-text"> Remove </span></button> <# } #> </div> <# if ( data.buttons.check ) { #> <button type="button" class="check" tabindex="-1"><span class="media-modal-icon" aria-hidden="true"></span><span class="screen-reader-text"> Deselect </span></button> <# } #> <# var maybeReadOnly = data.can.save || data.allowLocalEdits ? '' : 'readonly'; if ( data.describe ) { if ( 'image' === data.type ) { #> <input type="text" value="{{ data.caption }}" class="describe" data-setting="caption" aria-label="Caption" placeholder="Caption…" {{ maybeReadOnly }} /> <# } else { #> <input type="text" value="{{ data.title }}" class="describe" data-setting="title" <# if ( 'video' === data.type ) { #> aria-label="Video title" placeholder="Video title…" <# } else if ( 'audio' === data.type ) { #> aria-label="Audio title" placeholder="Audio title…" <# } else { #> aria-label="Media title" placeholder="Media title…" <# } #> {{ maybeReadOnly }} /> <# } } #> </script> <script type="text/html" id="tmpl-attachment-details"> <h2> Attachment Details <span class="settings-save-status" role="status"> <span class="spinner"></span> <span class="saved">Saved.</span> </span> </h2> <div class="attachment-info"> <# if ( 'audio' === data.type ) { #> <div class="wp-media-wrapper wp-audio"> <audio style="visibility: hidden" controls class="wp-audio-shortcode" width="100%" preload="none"> <source type="{{ data.mime }}" src="{{ data.url }}" /> </audio> </div> <# } else if ( 'video' === data.type ) { var w_rule = ''; if ( data.width ) { w_rule = 'width: ' + data.width + 'px;'; } else if ( wp.media.view.settings.contentWidth ) { w_rule = 'width: ' + wp.media.view.settings.contentWidth + 'px;'; } #> <div style="{{ w_rule }}" class="wp-media-wrapper wp-video"> <video controls="controls" class="wp-video-shortcode" preload="metadata" <# if ( data.width ) { #>width="{{ data.width }}"<# } #> <# if ( data.height ) { #>height="{{ data.height }}"<# } #> <# if ( data.image && data.image.src !== data.icon ) { #>poster="{{ data.image.src }}"<# } #>> <source type="{{ data.mime }}" src="{{ data.url }}" /> </video> </div> <# } else { #> <div class="thumbnail thumbnail-{{ data.type }}"> <# if ( data.uploading ) { #> <div class="media-progress-bar"><div></div></div> <# } else if ( 'image' === data.type && data.size && data.size.url ) { #> <img src="{{ data.size.url }}" draggable="false" alt="" /> <# } else { #> <img src="{{ data.icon }}" class="icon" draggable="false" alt="" /> <# } #> </div> <# } #> <div class="details"> <div class="filename">{{ data.filename }}</div> <div class="uploaded">{{ data.dateFormatted }}</div> <div class="file-size">{{ data.filesizeHumanReadable }}</div> <# if ( 'image' === data.type && ! data.uploading ) { #> <# if ( data.width && data.height ) { #> <div class="dimensions"> {{ data.width }} by {{ data.height }} pixels </div> <# } #> <# if ( data.originalImageURL && data.originalImageName ) { #> <div class="word-wrap-break-word"> Original image: <a href="{{ data.originalImageURL }}">{{data.originalImageName}}</a> </div> <# } #> <# if ( data.can.save && data.sizes ) { #> <a class="edit-attachment" href="{{ data.editLink }}&image-editor" target="_blank">Edit Image</a> <# } #> <# } #> <# if ( data.fileLength && data.fileLengthHumanReadable ) { #> <div class="file-length">Length: <span aria-hidden="true">{{ data.fileLengthHumanReadable }}</span> <span class="screen-reader-text">{{ data.fileLengthHumanReadable }}</span> </div> <# } #> <# if ( data.mediaStates ) { #> <div class="media-states"><strong>Used as:</strong> {{ data.mediaStates }}</div> <# } #> <# if ( ! data.uploading && data.can.remove ) { #> <button type="button" class="button-link delete-attachment">Delete permanently</button> <# } #> <div class="compat-meta"> <# if ( data.compat && data.compat.meta ) { #> {{{ data.compat.meta }}} <# } #> </div> </div> </div> <# var maybeReadOnly = data.can.save || data.allowLocalEdits ? '' : 'readonly'; #> <# if ( 'image' === data.type ) { #> <span class="setting alt-text has-description" data-setting="alt"> <label for="attachment-details-alt-text" class="name">Alt Text</label> <textarea id="attachment-details-alt-text" aria-describedby="alt-text-description" {{ maybeReadOnly }}>{{ data.alt }}</textarea> </span> <p class="description" id="alt-text-description"><a href="https://www.w3.org/WAI/tutorials/images/decision-tree/" target="_blank">Learn how to describe the purpose of the image<span class="screen-reader-text"> (opens in a new tab)</span><span aria-hidden="true" class="dashicons dashicons-external"></span></a>. Leave empty if the image is purely decorative.</p> <# } #> <span class="setting" data-setting="title"> <label for="attachment-details-title" class="name">Title</label> <input type="text" id="attachment-details-title" value="{{ data.title }}" {{ maybeReadOnly }} /> </span> <# if ( 'audio' === data.type ) { #> <span class="setting" data-setting="artist"> <label for="attachment-details-artist" class="name">Artist</label> <input type="text" id="attachment-details-artist" value="{{ data.artist || data.meta.artist || '' }}" /> </span> <span class="setting" data-setting="album"> <label for="attachment-details-album" class="name">Album</label> <input type="text" id="attachment-details-album" value="{{ data.album || data.meta.album || '' }}" /> </span> <# } #> <span class="setting" data-setting="caption"> <label for="attachment-details-caption" class="name">Caption</label> <textarea id="attachment-details-caption" {{ maybeReadOnly }}>{{ data.caption }}</textarea> </span> <span class="setting" data-setting="description"> <label for="attachment-details-description" class="name">Description</label> <textarea id="attachment-details-description" {{ maybeReadOnly }}>{{ data.description }}</textarea> </span> <span class="setting" data-setting="url"> <label for="attachment-details-copy-link" class="name">File URL:</label> <input type="text" class="attachment-details-copy-link ltr" id="attachment-details-copy-link" value="{{ data.url }}" readonly /> <div class="copy-to-clipboard-container"> <button type="button" class="button button-small copy-attachment-url" data-clipboard-target="#attachment-details-copy-link">Copy URL to clipboard</button> <span class="success hidden" aria-hidden="true">Copied!</span> </div> </span> </script> <script type="text/html" id="tmpl-media-selection"> <div class="selection-info"> <span class="count"></span> <# if ( data.editable ) { #> <button type="button" class="button-link edit-selection">Edit Selection</button> <# } #> <# if ( data.clearable ) { #> <button type="button" class="button-link clear-selection">Clear</button> <# } #> </div> <div class="selection-view"></div> </script> <script type="text/html" id="tmpl-attachment-display-settings"> <h2>Attachment Display Settings</h2> <# if ( 'image' === data.type ) { #> <span class="setting align"> <label for="attachment-display-settings-alignment" class="name">Alignment</label> <select id="attachment-display-settings-alignment" class="alignment" data-setting="align" <# if ( data.userSettings ) { #> data-user-setting="align" <# } #>> <option value="left"> Left </option> <option value="center"> Center </option> <option value="right"> Right </option> <option value="none" selected> None </option> </select> </span> <# } #> <span class="setting"> <label for="attachment-display-settings-link-to" class="name"> <# if ( data.model.canEmbed ) { #> Embed or Link <# } else { #> Link To <# } #> </label> <select id="attachment-display-settings-link-to" class="link-to" data-setting="link" <# if ( data.userSettings && ! data.model.canEmbed ) { #> data-user-setting="urlbutton" <# } #>> <# if ( data.model.canEmbed ) { #> <option value="embed" selected> Embed Media Player </option> <option value="file"> <# } else { #> <option value="none" selected> None </option> <option value="file"> <# } #> <# if ( data.model.canEmbed ) { #> Link to Media File <# } else { #> Media File <# } #> </option> <option value="post"> <# if ( data.model.canEmbed ) { #> Link to Attachment Page <# } else { #> Attachment Page <# } #> </option> <# if ( 'image' === data.type ) { #> <option value="custom"> Custom URL </option> <# } #> </select> </span> <span class="setting"> <label for="attachment-display-settings-link-to-custom" class="name">URL</label> <input type="text" id="attachment-display-settings-link-to-custom" class="link-to-custom" data-setting="linkUrl" /> </span> <# if ( 'undefined' !== typeof data.sizes ) { #> <span class="setting"> <label for="attachment-display-settings-size" class="name">Size</label> <select id="attachment-display-settings-size" class="size" name="size" data-setting="size" <# if ( data.userSettings ) { #> data-user-setting="imgsize" <# } #>> <# var size = data.sizes['thumbnail']; if ( size ) { #> <option value="thumbnail" > Thumbnail – {{ size.width }} × {{ size.height }} </option> <# } #> <# var size = data.sizes['medium']; if ( size ) { #> <option value="medium" > Medium – {{ size.width }} × {{ size.height }} </option> <# } #> <# var size = data.sizes['large']; if ( size ) { #> <option value="large" > Large – {{ size.width }} × {{ size.height }} </option> <# } #> <# var size = data.sizes['full']; if ( size ) { #> <option value="full" selected='selected'> Full Size – {{ size.width }} × {{ size.height }} </option> <# } #> </select> </span> <# } #> </script> <script type="text/html" id="tmpl-gallery-settings"> <h2>Gallery Settings</h2> <span class="setting"> <label for="gallery-settings-link-to" class="name">Link To</label> <select id="gallery-settings-link-to" class="link-to" data-setting="link" <# if ( data.userSettings ) { #> data-user-setting="urlbutton" <# } #>> <option value="post" <# if ( ! wp.media.galleryDefaults.link || 'post' === wp.media.galleryDefaults.link ) { #>selected="selected"<# } #>> Attachment Page </option> <option value="file" <# if ( 'file' === wp.media.galleryDefaults.link ) { #>selected="selected"<# } #>> Media File </option> <option value="none" <# if ( 'none' === wp.media.galleryDefaults.link ) { #>selected="selected"<# } #>> None </option> </select> </span> <span class="setting"> <label for="gallery-settings-columns" class="name select-label-inline">Columns</label> <select id="gallery-settings-columns" class="columns" name="columns" data-setting="columns"> <option value="1" <# if ( 1 == wp.media.galleryDefaults.columns ) { #>selected="selected"<# } #>> 1 </option> <option value="2" <# if ( 2 == wp.media.galleryDefaults.columns ) { #>selected="selected"<# } #>> 2 </option> <option value="3" <# if ( 3 == wp.media.galleryDefaults.columns ) { #>selected="selected"<# } #>> 3 </option> <option value="4" <# if ( 4 == wp.media.galleryDefaults.columns ) { #>selected="selected"<# } #>> 4 </option> <option value="5" <# if ( 5 == wp.media.galleryDefaults.columns ) { #>selected="selected"<# } #>> 5 </option> <option value="6" <# if ( 6 == wp.media.galleryDefaults.columns ) { #>selected="selected"<# } #>> 6 </option> <option value="7" <# if ( 7 == wp.media.galleryDefaults.columns ) { #>selected="selected"<# } #>> 7 </option> <option value="8" <# if ( 8 == wp.media.galleryDefaults.columns ) { #>selected="selected"<# } #>> 8 </option> <option value="9" <# if ( 9 == wp.media.galleryDefaults.columns ) { #>selected="selected"<# } #>> 9 </option> </select> </span> <span class="setting"> <input type="checkbox" id="gallery-settings-random-order" data-setting="_orderbyRandom" /> <label for="gallery-settings-random-order" class="checkbox-label-inline">Random Order</label> </span> <span class="setting size"> <label for="gallery-settings-size" class="name">Size</label> <select id="gallery-settings-size" class="size" name="size" data-setting="size" <# if ( data.userSettings ) { #> data-user-setting="imgsize" <# } #> > <option value="thumbnail"> Thumbnail </option> <option value="medium"> Medium </option> <option value="large"> Large </option> <option value="full"> Full Size </option> </select> </span> </script> <script type="text/html" id="tmpl-playlist-settings"> <h2>Playlist Settings</h2> <# var emptyModel = _.isEmpty( data.model ), isVideo = 'video' === data.controller.get('library').props.get('type'); #> <span class="setting"> <input type="checkbox" id="playlist-settings-show-list" data-setting="tracklist" <# if ( emptyModel ) { #> checked="checked" <# } #> /> <label for="playlist-settings-show-list" class="checkbox-label-inline"> <# if ( isVideo ) { #> Show Video List <# } else { #> Show Tracklist <# } #> </label> </span> <# if ( ! isVideo ) { #> <span class="setting"> <input type="checkbox" id="playlist-settings-show-artist" data-setting="artists" <# if ( emptyModel ) { #> checked="checked" <# } #> /> <label for="playlist-settings-show-artist" class="checkbox-label-inline"> Show Artist Name in Tracklist </label> </span> <# } #> <span class="setting"> <input type="checkbox" id="playlist-settings-show-images" data-setting="images" <# if ( emptyModel ) { #> checked="checked" <# } #> /> <label for="playlist-settings-show-images" class="checkbox-label-inline"> Show Images </label> </span> </script> <script type="text/html" id="tmpl-embed-link-settings"> <span class="setting link-text"> <label for="embed-link-settings-link-text" class="name">Link Text</label> <input type="text" id="embed-link-settings-link-text" class="alignment" data-setting="linkText" /> </span> <div class="embed-container" style="display: none;"> <div class="embed-preview"></div> </div> </script> <script type="text/html" id="tmpl-embed-image-settings"> <div class="wp-clearfix"> <div class="thumbnail"> <img src="{{ data.model.url }}" draggable="false" alt="" /> </div> </div> <span class="setting alt-text has-description"> <label for="embed-image-settings-alt-text" class="name">Alternative Text</label> <textarea id="embed-image-settings-alt-text" data-setting="alt" aria-describedby="alt-text-description"></textarea> </span> <p class="description" id="alt-text-description"><a href="https://www.w3.org/WAI/tutorials/images/decision-tree/" target="_blank">Learn how to describe the purpose of the image<span class="screen-reader-text"> (opens in a new tab)</span><span aria-hidden="true" class="dashicons dashicons-external"></span></a>. Leave empty if the image is purely decorative.</p> <span class="setting caption"> <label for="embed-image-settings-caption" class="name">Caption</label> <textarea id="embed-image-settings-caption" data-setting="caption"></textarea> </span> <fieldset class="setting-group"> <legend class="name">Align</legend> <span class="setting align"> <span class="button-group button-large" data-setting="align"> <button class="button" value="left"> Left </button> <button class="button" value="center"> Center </button> <button class="button" value="right"> Right </button> <button class="button active" value="none"> None </button> </span> </span> </fieldset> <fieldset class="setting-group"> <legend class="name">Link To</legend> <span class="setting link-to"> <span class="button-group button-large" data-setting="link"> <button class="button" value="file"> Image URL </button> <button class="button" value="custom"> Custom URL </button> <button class="button active" value="none"> None </button> </span> </span> <span class="setting"> <label for="embed-image-settings-link-to-custom" class="name">URL</label> <input type="text" id="embed-image-settings-link-to-custom" class="link-to-custom" data-setting="linkUrl" /> </span> </fieldset> </script> <script type="text/html" id="tmpl-image-details"> <div class="media-embed"> <div class="embed-media-settings"> <div class="column-settings"> <span class="setting alt-text has-description"> <label for="image-details-alt-text" class="name">Alternative Text</label> <textarea id="image-details-alt-text" data-setting="alt" aria-describedby="alt-text-description">{{ data.model.alt }}</textarea> </span> <p class="description" id="alt-text-description"><a href="https://www.w3.org/WAI/tutorials/images/decision-tree/" target="_blank">Learn how to describe the purpose of the image<span class="screen-reader-text"> (opens in a new tab)</span><span aria-hidden="true" class="dashicons dashicons-external"></span></a>. Leave empty if the image is purely decorative.</p> <span class="setting caption"> <label for="image-details-caption" class="name">Caption</label> <textarea id="image-details-caption" data-setting="caption">{{ data.model.caption }}</textarea> </span> <h2>Display Settings</h2> <fieldset class="setting-group"> <legend class="legend-inline">Align</legend> <span class="setting align"> <span class="button-group button-large" data-setting="align"> <button class="button" value="left"> Left </button> <button class="button" value="center"> Center </button> <button class="button" value="right"> Right </button> <button class="button active" value="none"> None </button> </span> </span> </fieldset> <# if ( data.attachment ) { #> <# if ( 'undefined' !== typeof data.attachment.sizes ) { #> <span class="setting size"> <label for="image-details-size" class="name">Size</label> <select id="image-details-size" class="size" name="size" data-setting="size" <# if ( data.userSettings ) { #> data-user-setting="imgsize" <# } #>> <# var size = data.sizes['thumbnail']; if ( size ) { #> <option value="thumbnail"> Thumbnail – {{ size.width }} × {{ size.height }} </option> <# } #> <# var size = data.sizes['medium']; if ( size ) { #> <option value="medium"> Medium – {{ size.width }} × {{ size.height }} </option> <# } #> <# var size = data.sizes['large']; if ( size ) { #> <option value="large"> Large – {{ size.width }} × {{ size.height }} </option> <# } #> <# var size = data.sizes['full']; if ( size ) { #> <option value="full"> Full Size – {{ size.width }} × {{ size.height }} </option> <# } #> <option value="custom"> Custom Size </option> </select> </span> <# } #> <div class="custom-size wp-clearfix<# if ( data.model.size !== 'custom' ) { #> hidden<# } #>"> <span class="custom-size-setting"> <label for="image-details-size-width">Width</label> <input type="number" id="image-details-size-width" aria-describedby="image-size-desc" data-setting="customWidth" step="1" value="{{ data.model.customWidth }}" /> </span> <span class="sep" aria-hidden="true">×</span> <span class="custom-size-setting"> <label for="image-details-size-height">Height</label> <input type="number" id="image-details-size-height" aria-describedby="image-size-desc" data-setting="customHeight" step="1" value="{{ data.model.customHeight }}" /> </span> <p id="image-size-desc" class="description">Image size in pixels</p> </div> <# } #> <span class="setting link-to"> <label for="image-details-link-to" class="name">Link To</label> <select id="image-details-link-to" data-setting="link"> <# if ( data.attachment ) { #> <option value="file"> Media File </option> <option value="post"> Attachment Page </option> <# } else { #> <option value="file"> Image URL </option> <# } #> <option value="custom"> Custom URL </option> <option value="none"> None </option> </select> </span> <span class="setting"> <label for="image-details-link-to-custom" class="name">URL</label> <input type="text" id="image-details-link-to-custom" class="link-to-custom" data-setting="linkUrl" /> </span> <div class="advanced-section"> <h2><button type="button" class="button-link advanced-toggle">Advanced Options</button></h2> <div class="advanced-settings hidden"> <div class="advanced-image"> <span class="setting title-text"> <label for="image-details-title-attribute" class="name">Image Title Attribute</label> <input type="text" id="image-details-title-attribute" data-setting="title" value="{{ data.model.title }}" /> </span> <span class="setting extra-classes"> <label for="image-details-css-class" class="name">Image CSS Class</label> <input type="text" id="image-details-css-class" data-setting="extraClasses" value="{{ data.model.extraClasses }}" /> </span> </div> <div class="advanced-link"> <span class="setting link-target"> <input type="checkbox" id="image-details-link-target" data-setting="linkTargetBlank" value="_blank" <# if ( data.model.linkTargetBlank ) { #>checked="checked"<# } #>> <label for="image-details-link-target" class="checkbox-label">Open link in a new tab</label> </span> <span class="setting link-rel"> <label for="image-details-link-rel" class="name">Link Rel</label> <input type="text" id="image-details-link-rel" data-setting="linkRel" value="{{ data.model.linkRel }}" /> </span> <span class="setting link-class-name"> <label for="image-details-link-css-class" class="name">Link CSS Class</label> <input type="text" id="image-details-link-css-class" data-setting="linkClassName" value="{{ data.model.linkClassName }}" /> </span> </div> </div> </div> </div> <div class="column-image"> <div class="image"> <img src="{{ data.model.url }}" draggable="false" alt="" /> <# if ( data.attachment && window.imageEdit ) { #> <div class="actions"> <input type="button" class="edit-attachment button" value="Edit Original" /> <input type="button" class="replace-attachment button" value="Replace" /> </div> <# } #> </div> </div> </div> </div> </script> <script type="text/html" id="tmpl-image-editor"> <div id="media-head-{{ data.id }}"></div> <div id="image-editor-{{ data.id }}"></div> </script> <script type="text/html" id="tmpl-audio-details"> <# var ext, html5types = { mp3: wp.media.view.settings.embedMimes.mp3, ogg: wp.media.view.settings.embedMimes.ogg }; #> <div class="media-embed media-embed-details"> <div class="embed-media-settings embed-audio-settings"> <audio style="visibility: hidden" controls class="wp-audio-shortcode" width="{{ _.isUndefined( data.model.width ) ? 400 : data.model.width }}" preload="{{ _.isUndefined( data.model.preload ) ? 'none' : data.model.preload }}" <# if ( ! _.isUndefined( data.model.autoplay ) && data.model.autoplay ) { #> autoplay<# } if ( ! _.isUndefined( data.model.loop ) && data.model.loop ) { #> loop<# } #> > <# if ( ! _.isEmpty( data.model.src ) ) { #> <source src="{{ data.model.src }}" type="{{ wp.media.view.settings.embedMimes[ data.model.src.split('.').pop() ] }}" /> <# } #> <# if ( ! _.isEmpty( data.model.mp3 ) ) { #> <source src="{{ data.model.mp3 }}" type="{{ wp.media.view.settings.embedMimes[ 'mp3' ] }}" /> <# } #> <# if ( ! _.isEmpty( data.model.ogg ) ) { #> <source src="{{ data.model.ogg }}" type="{{ wp.media.view.settings.embedMimes[ 'ogg' ] }}" /> <# } #> <# if ( ! _.isEmpty( data.model.flac ) ) { #> <source src="{{ data.model.flac }}" type="{{ wp.media.view.settings.embedMimes[ 'flac' ] }}" /> <# } #> <# if ( ! _.isEmpty( data.model.m4a ) ) { #> <source src="{{ data.model.m4a }}" type="{{ wp.media.view.settings.embedMimes[ 'm4a' ] }}" /> <# } #> <# if ( ! _.isEmpty( data.model.wav ) ) { #> <source src="{{ data.model.wav }}" type="{{ wp.media.view.settings.embedMimes[ 'wav' ] }}" /> <# } #> </audio> <# if ( ! _.isEmpty( data.model.src ) ) { ext = data.model.src.split('.').pop(); if ( html5types[ ext ] ) { delete html5types[ ext ]; } #> <span class="setting"> <label for="audio-details-source" class="name">URL</label> <input type="text" id="audio-details-source" readonly data-setting="src" value="{{ data.model.src }}" /> <button type="button" class="button-link remove-setting">Remove audio source</button> </span> <# } #> <# if ( ! _.isEmpty( data.model.mp3 ) ) { if ( ! _.isUndefined( html5types.mp3 ) ) { delete html5types.mp3; } #> <span class="setting"> <label for="audio-details-mp3-source" class="name">MP3</label> <input type="text" id="audio-details-mp3-source" readonly data-setting="mp3" value="{{ data.model.mp3 }}" /> <button type="button" class="button-link remove-setting">Remove audio source</button> </span> <# } #> <# if ( ! _.isEmpty( data.model.ogg ) ) { if ( ! _.isUndefined( html5types.ogg ) ) { delete html5types.ogg; } #> <span class="setting"> <label for="audio-details-ogg-source" class="name">OGG</label> <input type="text" id="audio-details-ogg-source" readonly data-setting="ogg" value="{{ data.model.ogg }}" /> <button type="button" class="button-link remove-setting">Remove audio source</button> </span> <# } #> <# if ( ! _.isEmpty( data.model.flac ) ) { if ( ! _.isUndefined( html5types.flac ) ) { delete html5types.flac; } #> <span class="setting"> <label for="audio-details-flac-source" class="name">FLAC</label> <input type="text" id="audio-details-flac-source" readonly data-setting="flac" value="{{ data.model.flac }}" /> <button type="button" class="button-link remove-setting">Remove audio source</button> </span> <# } #> <# if ( ! _.isEmpty( data.model.m4a ) ) { if ( ! _.isUndefined( html5types.m4a ) ) { delete html5types.m4a; } #> <span class="setting"> <label for="audio-details-m4a-source" class="name">M4A</label> <input type="text" id="audio-details-m4a-source" readonly data-setting="m4a" value="{{ data.model.m4a }}" /> <button type="button" class="button-link remove-setting">Remove audio source</button> </span> <# } #> <# if ( ! _.isEmpty( data.model.wav ) ) { if ( ! _.isUndefined( html5types.wav ) ) { delete html5types.wav; } #> <span class="setting"> <label for="audio-details-wav-source" class="name">WAV</label> <input type="text" id="audio-details-wav-source" readonly data-setting="wav" value="{{ data.model.wav }}" /> <button type="button" class="button-link remove-setting">Remove audio source</button> </span> <# } #> <# if ( ! _.isEmpty( html5types ) ) { #> <fieldset class="setting-group"> <legend class="name">Add alternate sources for maximum HTML5 playback</legend> <span class="setting"> <span class="button-large"> <# _.each( html5types, function (mime, type) { #> <button class="button add-media-source" data-mime="{{ mime }}">{{ type }}</button> <# } ) #> </span> </span> </fieldset> <# } #> <fieldset class="setting-group"> <legend class="name">Preload</legend> <span class="setting preload"> <span class="button-group button-large" data-setting="preload"> <button class="button" value="auto">Auto</button> <button class="button" value="metadata">Metadata</button> <button class="button active" value="none">None</button> </span> </span> </fieldset> <span class="setting-group"> <span class="setting checkbox-setting autoplay"> <input type="checkbox" id="audio-details-autoplay" data-setting="autoplay" /> <label for="audio-details-autoplay" class="checkbox-label">Autoplay</label> </span> <span class="setting checkbox-setting"> <input type="checkbox" id="audio-details-loop" data-setting="loop" /> <label for="audio-details-loop" class="checkbox-label">Loop</label> </span> </span> </div> </div> </script> <script type="text/html" id="tmpl-video-details"> <# var ext, html5types = { mp4: wp.media.view.settings.embedMimes.mp4, ogv: wp.media.view.settings.embedMimes.ogv, webm: wp.media.view.settings.embedMimes.webm }; #> <div class="media-embed media-embed-details"> <div class="embed-media-settings embed-video-settings"> <div class="wp-video-holder"> <# var w = ! data.model.width || data.model.width > 640 ? 640 : data.model.width, h = ! data.model.height ? 360 : data.model.height; if ( data.model.width && w !== data.model.width ) { h = Math.ceil( ( h * w ) / data.model.width ); } #> <# var w_rule = '', classes = [], w, h, settings = wp.media.view.settings, isYouTube = isVimeo = false; if ( ! _.isEmpty( data.model.src ) ) { isYouTube = data.model.src.match(/youtube|youtu\.be/); isVimeo = -1 !== data.model.src.indexOf('vimeo'); } if ( settings.contentWidth && data.model.width >= settings.contentWidth ) { w = settings.contentWidth; } else { w = data.model.width; } if ( w !== data.model.width ) { h = Math.ceil( ( data.model.height * w ) / data.model.width ); } else { h = data.model.height; } if ( w ) { w_rule = 'width: ' + w + 'px; '; } if ( isYouTube ) { classes.push( 'youtube-video' ); } if ( isVimeo ) { classes.push( 'vimeo-video' ); } #> <div style="{{ w_rule }}" class="wp-video"> <video controls class="wp-video-shortcode {{ classes.join( ' ' ) }}" <# if ( w ) { #>width="{{ w }}"<# } #> <# if ( h ) { #>height="{{ h }}"<# } #> <# if ( ! _.isUndefined( data.model.poster ) && data.model.poster ) { #> poster="{{ data.model.poster }}"<# } #> preload ="{{ _.isUndefined( data.model.preload ) ? 'metadata' : data.model.preload }}" <# if ( ! _.isUndefined( data.model.autoplay ) && data.model.autoplay ) { #> autoplay<# } if ( ! _.isUndefined( data.model.loop ) && data.model.loop ) { #> loop<# } #> > <# if ( ! _.isEmpty( data.model.src ) ) { if ( isYouTube ) { #> <source src="{{ data.model.src }}" type="video/youtube" /> <# } else if ( isVimeo ) { #> <source src="{{ data.model.src }}" type="video/vimeo" /> <# } else { #> <source src="{{ data.model.src }}" type="{{ settings.embedMimes[ data.model.src.split('.').pop() ] }}" /> <# } } #> <# if ( data.model.mp4 ) { #> <source src="{{ data.model.mp4 }}" type="{{ settings.embedMimes[ 'mp4' ] }}" /> <# } #> <# if ( data.model.m4v ) { #> <source src="{{ data.model.m4v }}" type="{{ settings.embedMimes[ 'm4v' ] }}" /> <# } #> <# if ( data.model.webm ) { #> <source src="{{ data.model.webm }}" type="{{ settings.embedMimes[ 'webm' ] }}" /> <# } #> <# if ( data.model.ogv ) { #> <source src="{{ data.model.ogv }}" type="{{ settings.embedMimes[ 'ogv' ] }}" /> <# } #> <# if ( data.model.flv ) { #> <source src="{{ data.model.flv }}" type="{{ settings.embedMimes[ 'flv' ] }}" /> <# } #> {{{ data.model.content }}} </video> </div> <# if ( ! _.isEmpty( data.model.src ) ) { ext = data.model.src.split('.').pop(); if ( html5types[ ext ] ) { delete html5types[ ext ]; } #> <span class="setting"> <label for="video-details-source" class="name">URL</label> <input type="text" id="video-details-source" readonly data-setting="src" value="{{ data.model.src }}" /> <button type="button" class="button-link remove-setting">Remove video source</button> </span> <# } #> <# if ( ! _.isEmpty( data.model.mp4 ) ) { if ( ! _.isUndefined( html5types.mp4 ) ) { delete html5types.mp4; } #> <span class="setting"> <label for="video-details-mp4-source" class="name">MP4</label> <input type="text" id="video-details-mp4-source" readonly data-setting="mp4" value="{{ data.model.mp4 }}" /> <button type="button" class="button-link remove-setting">Remove video source</button> </span> <# } #> <# if ( ! _.isEmpty( data.model.m4v ) ) { if ( ! _.isUndefined( html5types.m4v ) ) { delete html5types.m4v; } #> <span class="setting"> <label for="video-details-m4v-source" class="name">M4V</label> <input type="text" id="video-details-m4v-source" readonly data-setting="m4v" value="{{ data.model.m4v }}" /> <button type="button" class="button-link remove-setting">Remove video source</button> </span> <# } #> <# if ( ! _.isEmpty( data.model.webm ) ) { if ( ! _.isUndefined( html5types.webm ) ) { delete html5types.webm; } #> <span class="setting"> <label for="video-details-webm-source" class="name">WEBM</label> <input type="text" id="video-details-webm-source" readonly data-setting="webm" value="{{ data.model.webm }}" /> <button type="button" class="button-link remove-setting">Remove video source</button> </span> <# } #> <# if ( ! _.isEmpty( data.model.ogv ) ) { if ( ! _.isUndefined( html5types.ogv ) ) { delete html5types.ogv; } #> <span class="setting"> <label for="video-details-ogv-source" class="name">OGV</label> <input type="text" id="video-details-ogv-source" readonly data-setting="ogv" value="{{ data.model.ogv }}" /> <button type="button" class="button-link remove-setting">Remove video source</button> </span> <# } #> <# if ( ! _.isEmpty( data.model.flv ) ) { if ( ! _.isUndefined( html5types.flv ) ) { delete html5types.flv; } #> <span class="setting"> <label for="video-details-flv-source" class="name">FLV</label> <input type="text" id="video-details-flv-source" readonly data-setting="flv" value="{{ data.model.flv }}" /> <button type="button" class="button-link remove-setting">Remove video source</button> </span> <# } #> </div> <# if ( ! _.isEmpty( html5types ) ) { #> <fieldset class="setting-group"> <legend class="name">Add alternate sources for maximum HTML5 playback</legend> <span class="setting"> <span class="button-large"> <# _.each( html5types, function (mime, type) { #> <button class="button add-media-source" data-mime="{{ mime }}">{{ type }}</button> <# } ) #> </span> </span> </fieldset> <# } #> <# if ( ! _.isEmpty( data.model.poster ) ) { #> <span class="setting"> <label for="video-details-poster-image" class="name">Poster Image</label> <input type="text" id="video-details-poster-image" readonly data-setting="poster" value="{{ data.model.poster }}" /> <button type="button" class="button-link remove-setting">Remove poster image</button> </span> <# } #> <fieldset class="setting-group"> <legend class="name">Preload</legend> <span class="setting preload"> <span class="button-group button-large" data-setting="preload"> <button class="button" value="auto">Auto</button> <button class="button" value="metadata">Metadata</button> <button class="button active" value="none">None</button> </span> </span> </fieldset> <span class="setting-group"> <span class="setting checkbox-setting autoplay"> <input type="checkbox" id="video-details-autoplay" data-setting="autoplay" /> <label for="video-details-autoplay" class="checkbox-label">Autoplay</label> </span> <span class="setting checkbox-setting"> <input type="checkbox" id="video-details-loop" data-setting="loop" /> <label for="video-details-loop" class="checkbox-label">Loop</label> </span> </span> <span class="setting" data-setting="content"> <# var content = ''; if ( ! _.isEmpty( data.model.content ) ) { var tracks = jQuery( data.model.content ).filter( 'track' ); _.each( tracks.toArray(), function( track, index ) { content += track.outerHTML; #> <label for="video-details-track-{{ index }}" class="name">Tracks (subtitles, captions, descriptions, chapters, or metadata)</label> <input class="content-track" type="text" id="video-details-track-{{ index }}" aria-describedby="video-details-track-desc-{{ index }}" value="{{ track.outerHTML }}" /> <span class="description" id="video-details-track-desc-{{ index }}"> The srclang, label, and kind values can be edited to set the video track language and kind. </span> <button type="button" class="button-link remove-setting remove-track">Remove video track</button><br /> <# } ); #> <# } else { #> <span class="name">Tracks (subtitles, captions, descriptions, chapters, or metadata)</span><br /> <em>There are no associated subtitles.</em> <# } #> <textarea class="hidden content-setting">{{ content }}</textarea> </span> </div> </div> </script> <script type="text/html" id="tmpl-editor-gallery"> <# if ( data.attachments.length ) { #> <div class="gallery gallery-columns-{{ data.columns }}"> <# _.each( data.attachments, function( attachment, index ) { #> <dl class="gallery-item"> <dt class="gallery-icon"> <# if ( attachment.thumbnail ) { #> <img src="{{ attachment.thumbnail.url }}" width="{{ attachment.thumbnail.width }}" height="{{ attachment.thumbnail.height }}" alt="{{ attachment.alt }}" /> <# } else { #> <img src="{{ attachment.url }}" alt="{{ attachment.alt }}" /> <# } #> </dt> <# if ( attachment.caption ) { #> <dd class="wp-caption-text gallery-caption"> {{{ data.verifyHTML( attachment.caption ) }}} </dd> <# } #> </dl> <# if ( index % data.columns === data.columns - 1 ) { #> <br style="clear: both;" /> <# } #> <# } ); #> </div> <# } else { #> <div class="wpview-error"> <div class="dashicons dashicons-format-gallery"></div><p>No items found.</p> </div> <# } #> </script> <script type="text/html" id="tmpl-crop-content"> <img class="crop-image" src="{{ data.url }}" alt="Image crop area preview. Requires mouse interaction." /> <div class="upload-errors"></div> </script> <script type="text/html" id="tmpl-site-icon-preview-crop"> <style> :root{ --site-icon-url: url( "{{ data.url }}" ); } </style> <h2>Site Icon Preview</h2> <p>As an app icon and a browser icon.</p> <div class="site-icon-preview crop"> <div class="image-preview-wrap app-icon-preview"> <img id="preview-app-icon" src="{{ data.url }}" class="app-icon-preview" alt="Preview as an app icon" /> </div> <div class="site-icon-preview-browser"> <svg role="img" aria-hidden="true" fill="none" xmlns="http://www.w3.org/2000/svg" class="browser-buttons"><path fill-rule="evenodd" clip-rule="evenodd" d="M0 20a6 6 0 1 1 12 0 6 6 0 0 1-12 0Zm18 0a6 6 0 1 1 12 0 6 6 0 0 1-12 0Zm24-6a6 6 0 1 0 0 12 6 6 0 0 0 0-12Z" /></svg> <div class="site-icon-preview-tab"> <div class="image-preview-wrap browser"> <img id="preview-favicon" src="{{ data.url }}" class="browser-icon-preview" alt="Preview as a browser icon" /> </div> <div class="site-icon-preview-site-title" aria-hidden="true"><# print( 'PiKHome' ) #></div> <svg role="img" aria-hidden="true" fill="none" xmlns="http://www.w3.org/2000/svg" class="close-button"> <path d="M12 13.0607L15.7123 16.773L16.773 15.7123L13.0607 12L16.773 8.28772L15.7123 7.22706L12 10.9394L8.28771 7.22705L7.22705 8.28771L10.9394 12L7.22706 15.7123L8.28772 16.773L12 13.0607Z" /> </svg> </div> </div> </div> </div> </script> <script type="text/javascript"> (function () { var c = document.body.className; c = c.replace(/woocommerce-no-js/, 'woocommerce-js'); document.body.className = c; })(); </script> <script id="shortcode-js" src="https://pikhome.com/wp-includes/js/shortcode.min.js?ver=7.0"></script> <script id="backbone-js" src="https://pikhome.com/wp-includes/js/backbone.min.js?ver=1.6.1"></script> <script id="wp-backbone-js" src="https://pikhome.com/wp-includes/js/wp-backbone.min.js?ver=7.0"></script> <script id="media-models-js-extra"> var _wpMediaModelsL10n = {"settings":{"ajaxurl":"/wp-admin/admin-ajax.php","post":{"id":0}}}; //# sourceURL=media-models-js-extra </script> <script id="media-models-js" src="https://pikhome.com/wp-includes/js/media-models.min.js?ver=7.0"></script> <script id="wp-plupload-js-extra"> var pluploadL10n = {"queue_limit_exceeded":"You have attempted to queue too many files.","file_exceeds_size_limit":"%s exceeds the maximum upload size for this site.","zero_byte_file":"This file is empty. Please try another.","invalid_filetype":"This file cannot be processed by the web server.","not_an_image":"This file is not an image. Please try another.","image_memory_exceeded":"Memory exceeded. Please try another smaller file.","image_dimensions_exceeded":"This is larger than the maximum size. Please try another.","default_error":"An error occurred in the upload. Please try again later.","missing_upload_url":"There was a configuration error. Please contact the server administrator.","upload_limit_exceeded":"You may only upload 1 file.","http_error":"Unexpected response from the server. The file may have been uploaded successfully. Check in the Media Library or reload the page.","http_error_image":"The server cannot process the image. This can happen if the server is busy or does not have enough resources to complete the task. Uploading a smaller image may help. Suggested maximum size is 2560 pixels.","upload_failed":"Upload failed.","big_upload_failed":"Please try uploading this file with the %1$sbrowser uploader%2$s.","big_upload_queued":"%s exceeds the maximum upload size for the multi-file uploader when used in your browser.","io_error":"IO error.","security_error":"Security error.","file_cancelled":"File canceled.","upload_stopped":"Upload stopped.","dismiss":"Dismiss","crunching":"Crunching\u2026","deleted":"moved to the Trash.","error_uploading":"\u201c%s\u201d has failed to upload.","unsupported_image":"This image cannot be displayed in a web browser. For best results convert it to JPEG before uploading.","noneditable_image":"The web server cannot generate responsive image sizes for this image. Convert it to JPEG or PNG before uploading.","file_url_copied":"The file URL has been copied to your clipboard"}; var _wpPluploadSettings = {"defaults":{"file_data_name":"async-upload","url":"/wp-admin/async-upload.php","filters":{"max_file_size":"3145728000b","mime_types":[{"extensions":"jpg,jpeg,jpe,gif,png,bmp,tiff,tif,webp,avif,ico,heic,heif,heics,heifs,asf,asx,wmv,wmx,wm,avi,divx,flv,mov,qt,mpeg,mpg,mpe,mp4,m4v,ogv,webm,mkv,3gp,3gpp,3g2,3gp2,txt,asc,c,cc,h,srt,csv,tsv,ics,rtx,css,vtt,dfxp,mp3,m4a,m4b,aac,ra,ram,wav,x-wav,ogg,oga,flac,mid,midi,wma,wax,mka,rtf,pdf,class,tar,zip,gz,gzip,rar,7z,psd,xcf,doc,pot,pps,ppt,wri,xla,xls,xlt,xlw,mdb,mpp,docx,docm,dotx,dotm,xlsx,xlsm,xlsb,xltx,xltm,xlam,pptx,pptm,ppsx,ppsm,potx,potm,ppam,sldx,sldm,onetoc,onetoc2,onetmp,onepkg,oxps,xps,odt,odp,ods,odg,odc,odb,odf,wp,wpd,key,numbers,pages"}]},"avif_upload_error":true,"heic_upload_error":true,"multipart_params":{"action":"upload-attachment","_wpnonce":"2f2a27c6e3"}},"browser":{"mobile":false,"supported":true},"limitExceeded":false}; //# sourceURL=wp-plupload-js-extra </script> <script id="wp-plupload-js" src="https://pikhome.com/wp-includes/js/plupload/wp-plupload.min.js?ver=7.0"></script> <script id="jquery-ui-core-js" src="https://pikhome.com/wp-includes/js/jquery/ui/core.min.js?ver=1.13.3"></script> <script id="jquery-ui-mouse-js" src="https://pikhome.com/wp-includes/js/jquery/ui/mouse.min.js?ver=1.13.3"></script> <script id="jquery-ui-sortable-js" src="https://pikhome.com/wp-includes/js/jquery/ui/sortable.min.js?ver=1.13.3"></script> <script id="mediaelement-core-js-before"> var mejsL10n = {"language":"en","strings":{"mejs.download-file":"Download File","mejs.install-flash":"You are using a browser that does not have Flash player enabled or installed. Please turn on your Flash player plugin or download the latest version from https://get.adobe.com/flashplayer/","mejs.fullscreen":"Fullscreen","mejs.play":"Play","mejs.pause":"Pause","mejs.time-slider":"Time Slider","mejs.time-help-text":"Use Left/Right Arrow keys to advance one second, Up/Down arrows to advance ten seconds.","mejs.live-broadcast":"Live Broadcast","mejs.volume-help-text":"Use Up/Down Arrow keys to increase or decrease volume.","mejs.unmute":"Unmute","mejs.mute":"Mute","mejs.volume-slider":"Volume Slider","mejs.video-player":"Video Player","mejs.audio-player":"Audio Player","mejs.captions-subtitles":"Captions/Subtitles","mejs.captions-chapters":"Chapters","mejs.none":"None","mejs.afrikaans":"Afrikaans","mejs.albanian":"Albanian","mejs.arabic":"Arabic","mejs.belarusian":"Belarusian","mejs.bulgarian":"Bulgarian","mejs.catalan":"Catalan","mejs.chinese":"Chinese","mejs.chinese-simplified":"Chinese (Simplified)","mejs.chinese-traditional":"Chinese (Traditional)","mejs.croatian":"Croatian","mejs.czech":"Czech","mejs.danish":"Danish","mejs.dutch":"Dutch","mejs.english":"English","mejs.estonian":"Estonian","mejs.filipino":"Filipino","mejs.finnish":"Finnish","mejs.french":"French","mejs.galician":"Galician","mejs.german":"German","mejs.greek":"Greek","mejs.haitian-creole":"Haitian Creole","mejs.hebrew":"Hebrew","mejs.hindi":"Hindi","mejs.hungarian":"Hungarian","mejs.icelandic":"Icelandic","mejs.indonesian":"Indonesian","mejs.irish":"Irish","mejs.italian":"Italian","mejs.japanese":"Japanese","mejs.korean":"Korean","mejs.latvian":"Latvian","mejs.lithuanian":"Lithuanian","mejs.macedonian":"Macedonian","mejs.malay":"Malay","mejs.maltese":"Maltese","mejs.norwegian":"Norwegian","mejs.persian":"Persian","mejs.polish":"Polish","mejs.portuguese":"Portuguese","mejs.romanian":"Romanian","mejs.russian":"Russian","mejs.serbian":"Serbian","mejs.slovak":"Slovak","mejs.slovenian":"Slovenian","mejs.spanish":"Spanish","mejs.swahili":"Swahili","mejs.swedish":"Swedish","mejs.tagalog":"Tagalog","mejs.thai":"Thai","mejs.turkish":"Turkish","mejs.ukrainian":"Ukrainian","mejs.vietnamese":"Vietnamese","mejs.welsh":"Welsh","mejs.yiddish":"Yiddish"}}; //# sourceURL=mediaelement-core-js-before </script> <script id="mediaelement-core-js" src="https://pikhome.com/wp-includes/js/mediaelement/mediaelement-and-player.min.js?ver=4.2.17"></script> <script id="mediaelement-migrate-js" src="https://pikhome.com/wp-includes/js/mediaelement/mediaelement-migrate.min.js?ver=7.0"></script> <script id="mediaelement-js-extra"> var _wpmejsSettings = {"pluginPath":"/wp-includes/js/mediaelement/","classPrefix":"mejs-","stretching":"responsive","audioShortcodeLibrary":"mediaelement","videoShortcodeLibrary":"mediaelement"}; //# sourceURL=mediaelement-js-extra </script> <script id="wp-mediaelement-js" src="https://pikhome.com/wp-includes/js/mediaelement/wp-mediaelement.min.js?ver=7.0"></script> <script id="wp-api-request-js-extra"> var wpApiSettings = {"root":"https://pikhome.com/wp-json/","nonce":"56a040840d","versionString":"wp/v2/"}; //# sourceURL=wp-api-request-js-extra </script> <script id="wp-api-request-js" src="https://pikhome.com/wp-includes/js/api-request.min.js?ver=7.0"></script> <script id="wp-dom-ready-js" src="https://pikhome.com/wp-includes/js/dist/dom-ready.min.js?ver=a06281ae5cf5500e9317"></script> <script id="wp-hooks-js" src="https://pikhome.com/wp-includes/js/dist/hooks.min.js?ver=7496969728ca0f95732d"></script> <script id="wp-i18n-js" src="https://pikhome.com/wp-includes/js/dist/i18n.min.js?ver=781d11515ad3d91786ec"></script> <script id="wp-i18n-js-after"> wp.i18n.setLocaleData( { 'text direction\u0004ltr': [ 'ltr' ] } ); //# sourceURL=wp-i18n-js-after </script> <script id="wp-a11y-js" src="https://pikhome.com/wp-includes/js/dist/a11y.min.js?ver=af934e5259bc51b8718e"></script> <script id="clipboard-js" src="https://pikhome.com/wp-includes/js/clipboard.min.js?ver=2.0.11"></script> <script id="media-views-js-extra"> var _wpMediaViewsL10n = {"mediaFrameDefaultTitle":"Media","url":"URL","addMedia":"Add media","search":"Search","select":"Select","cancel":"Cancel","update":"Update","replace":"Replace","remove":"Remove","back":"Back","selected":"%d selected","dragInfo":"Drag and drop to reorder media files.","uploadFilesTitle":"Upload files","uploadImagesTitle":"Upload images","mediaLibraryTitle":"Media Library","insertMediaTitle":"Add media","createNewGallery":"Create a new gallery","createNewPlaylist":"Create a new playlist","createNewVideoPlaylist":"Create a new video playlist","returnToLibrary":"\u2190 Go to library","allMediaItems":"All media items","allDates":"All dates","noItemsFound":"No items found.","insertIntoPost":"Insert into post","unattached":"Unattached","mine":"Mine","trash":"Trash","uploadedToThisPost":"Uploaded to this post","warnDelete":"You are about to permanently delete this item from your site.\nThis action cannot be undone.\n 'Cancel' to stop, 'OK' to delete.","warnBulkDelete":"You are about to permanently delete these items from your site.\nThis action cannot be undone.\n 'Cancel' to stop, 'OK' to delete.","warnBulkTrash":"You are about to trash these items.\n 'Cancel' to stop, 'OK' to delete.","bulkSelect":"Bulk select","trashSelected":"Move to Trash","restoreSelected":"Restore from Trash","deletePermanently":"Delete permanently","errorDeleting":"Error in deleting the attachment.","apply":"Apply","filterByDate":"Filter by date","filterByType":"Filter by type","searchLabel":"Search media","searchMediaLabel":"Search media","searchMediaPlaceholder":"Search media items...","mediaFound":"Number of media items found: %d","noMedia":"No media items found.","noMediaTryNewSearch":"No media items found. Try a different search.","attachmentDetails":"Attachment details","insertFromUrlTitle":"Insert from URL","setFeaturedImageTitle":"Featured image","setFeaturedImage":"Set featured image","createGalleryTitle":"Create gallery","editGalleryTitle":"Edit gallery","cancelGalleryTitle":"\u2190 Cancel gallery","insertGallery":"Insert gallery","updateGallery":"Update gallery","addToGallery":"Add to gallery","addToGalleryTitle":"Add to gallery","reverseOrder":"Reverse order","imageDetailsTitle":"Image details","imageReplaceTitle":"Replace image","imageDetailsCancel":"Cancel edit","editImage":"Edit image","chooseImage":"Choose image","selectAndCrop":"Select and crop","skipCropping":"Skip cropping","cropImage":"Crop image","cropYourImage":"Crop your image","cropping":"Cropping\u2026","suggestedDimensions":"Suggested image dimensions: %1$s by %2$s pixels.","cropError":"There has been an error cropping your image.","audioDetailsTitle":"Audio details","audioReplaceTitle":"Replace audio","audioAddSourceTitle":"Add audio source","audioDetailsCancel":"Cancel edit","videoDetailsTitle":"Video details","videoReplaceTitle":"Replace video","videoAddSourceTitle":"Add video source","videoDetailsCancel":"Cancel edit","videoSelectPosterImageTitle":"Select poster image","videoAddTrackTitle":"Add subtitles","playlistDragInfo":"Drag and drop to reorder tracks.","createPlaylistTitle":"Create audio playlist","editPlaylistTitle":"Edit audio playlist","cancelPlaylistTitle":"\u2190 Cancel audio playlist","insertPlaylist":"Insert audio playlist","updatePlaylist":"Update audio playlist","addToPlaylist":"Add to audio playlist","addToPlaylistTitle":"Add to Audio Playlist","videoPlaylistDragInfo":"Drag and drop to reorder videos.","createVideoPlaylistTitle":"Create video playlist","editVideoPlaylistTitle":"Edit video playlist","cancelVideoPlaylistTitle":"\u2190 Cancel video playlist","insertVideoPlaylist":"Insert video playlist","updateVideoPlaylist":"Update video playlist","addToVideoPlaylist":"Add to video playlist","addToVideoPlaylistTitle":"Add to video Playlist","filterAttachments":"Filter media","attachmentsList":"Media list","settings":{"tabs":[],"tabUrl":"https://pikhome.com/wp-admin/media-upload.php?chromeless=1","mimeTypes":{"image":"Images","audio":"Audio","video":"Video","application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document,application/vnd.ms-word.document.macroEnabled.12,application/vnd.ms-word.template.macroEnabled.12,application/vnd.oasis.opendocument.text,application/vnd.apple.pages,application/pdf,application/vnd.ms-xpsdocument,application/oxps,application/rtf,application/wordperfect,application/octet-stream":"Documents","application/vnd.apple.numbers,application/vnd.oasis.opendocument.spreadsheet,application/vnd.ms-excel,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/vnd.ms-excel.sheet.macroEnabled.12,application/vnd.ms-excel.sheet.binary.macroEnabled.12":"Spreadsheets","application/x-gzip,application/rar,application/x-tar,application/zip,application/x-7z-compressed":"Archives"},"captions":true,"nonce":{"sendToEditor":"4941f5c923","setAttachmentThumbnail":"097fba53bc"},"post":{"id":0},"defaultProps":{"link":"none","align":"","size":""},"attachmentCounts":{"audio":1,"video":1},"oEmbedProxyUrl":"https://pikhome.com/wp-json/oembed/1.0/proxy","embedExts":["mp3","ogg","flac","m4a","wav","mp4","m4v","webm","ogv","flv"],"embedMimes":{"mp3":"audio/mpeg","ogg":"audio/ogg","flac":"audio/flac","m4a":"audio/mpeg","wav":"audio/wav","mp4":"video/mp4","m4v":"video/mp4","webm":"video/webm","ogv":"video/ogg","flv":"video/x-flv"},"contentWidth":640,"months":[{"year":"2026","month":"6","text":"June 2026"},{"year":"2026","month":"5","text":"May 2026"},{"year":"2026","month":"1","text":"January 2026"},{"year":"2025","month":"12","text":"December 2025"},{"year":"2025","month":"11","text":"November 2025"},{"year":"2023","month":"5","text":"May 2023"},{"year":"2023","month":"4","text":"April 2023"},{"year":"2023","month":"2","text":"February 2023"},{"year":"2022","month":"4","text":"April 2022"},{"year":"2022","month":"3","text":"March 2022"},{"year":"2020","month":"3","text":"March 2020"},{"year":"2020","month":"2","text":"February 2020"}],"mediaTrash":0,"infiniteScrolling":0}}; //# sourceURL=media-views-js-extra </script> <script id="media-views-js" src="https://pikhome.com/wp-includes/js/media-views.min.js?ver=7.0"></script> <script id="media-editor-js" src="https://pikhome.com/wp-includes/js/media-editor.min.js?ver=7.0"></script> <script id="media-audiovideo-js" src="https://pikhome.com/wp-includes/js/media-audiovideo.min.js?ver=7.0"></script> <script id="hoverIntent-js" src="https://pikhome.com/wp-includes/js/hoverIntent.min.js?ver=1.10.2"></script> <script id="wc-add-to-cart-js-extra"> var wc_add_to_cart_params = {"ajax_url":"/wp-admin/admin-ajax.php","wc_ajax_url":"/?wc-ajax=%%endpoint%%","i18n_view_cart":"View cart","cart_url":"https://pikhome.com/cart/","is_cart":"","cart_redirect_after_add":"no"}; //# sourceURL=wc-add-to-cart-js-extra </script> <script id="wc-add-to-cart-js" src="https://pikhome.com/wp-content/plugins/woocommerce/assets/js/frontend/add-to-cart.min.js?ver=6.2.2"></script> <script id="js-cookie-js" src="https://pikhome.com/wp-content/plugins/woocommerce/assets/js/js-cookie/js.cookie.min.js?ver=2.1.4-wc.6.2.2"></script> <script id="woocommerce-js-extra"> var woocommerce_params = {"ajax_url":"/wp-admin/admin-ajax.php","wc_ajax_url":"/?wc-ajax=%%endpoint%%"}; //# sourceURL=woocommerce-js-extra </script> <script id="woocommerce-js" src="https://pikhome.com/wp-content/plugins/woocommerce/assets/js/frontend/woocommerce.min.js?ver=6.2.2"></script> <script id="wc-cart-fragments-js-extra"> var wc_cart_fragments_params = {"ajax_url":"/wp-admin/admin-ajax.php","wc_ajax_url":"/?wc-ajax=%%endpoint%%","cart_hash_key":"wc_cart_hash_caeeaca7dbc225bc9f8ea4782a41ffb2","fragment_name":"wc_fragments_caeeaca7dbc225bc9f8ea4782a41ffb2","request_timeout":"5000"}; //# sourceURL=wc-cart-fragments-js-extra </script> <script id="wc-cart-fragments-js" src="https://pikhome.com/wp-content/plugins/woocommerce/assets/js/frontend/cart-fragments.min.js?ver=6.2.2"></script> <script id="jquery-ui-menu-js" src="https://pikhome.com/wp-includes/js/jquery/ui/menu.min.js?ver=1.13.3"></script> <script id="jquery-ui-autocomplete-js" src="https://pikhome.com/wp-includes/js/jquery/ui/autocomplete.min.js?ver=1.13.3"></script> <script id="imagesloaded-js" src="https://pikhome.com/wp-includes/js/imagesloaded.min.js?ver=5.0.0"></script> <script id="open-shop-pro-menu-js-js" src="https://pikhome.com/wp-content/themes/open-shop//js/open-shop-menu.js?ver=1.0.0"></script> <script id="open-shop-accordian-menu-js-js" src="https://pikhome.com/wp-content/themes/open-shop//js/open-shop-accordian-menu.js?ver=1.0.0"></script> <script id="open-shop-custom-js-js-extra"> var open_shop = {"open_shop_top_slider_optn":"","open_shop_move_to_top_optn":"1"}; //# sourceURL=open-shop-custom-js-js-extra </script> <script id="open-shop-custom-js-js" src="https://pikhome.com/wp-content/themes/open-shop//js/open-shop-custom.js?ver=1.0.0"></script> <script async data-wp-strategy="async" fetchpriority="low" id="comment-reply-js" src="https://pikhome.com/wp-includes/js/comment-reply.min.js?ver=7.0"></script> <script id="open-shop-woocommerce-js-js-extra"> var openshop = {"ajaxUrl":"https://pikhome.com/wp-admin/admin-ajax.php"}; //# sourceURL=open-shop-woocommerce-js-js-extra </script> <script id="open-shop-woocommerce-js-js" src="https://pikhome.com/wp-content/themes/open-shop//inc/woocommerce/js/woocommerce.js?ver=1.0.0"></script> <script id="open-quick-view-js-extra"> var openshopqv = {"ajaxurl":"https://pikhome.com/wp-admin/admin-ajax.php"}; //# sourceURL=open-quick-view-js-extra </script> <script id="open-quick-view-js" src="https://pikhome.com/wp-content/themes/open-shop/inc/woocommerce/quick-view/js/quick-view.js?ver=7.0"></script> <script id="jquery-ui-datepicker-js" src="https://pikhome.com/wp-includes/js/jquery/ui/datepicker.min.js?ver=1.13.3"></script> <script id="jquery-ui-datepicker-js-after"> jQuery(function(jQuery){jQuery.datepicker.setDefaults({"closeText":"Close","currentText":"Today","monthNames":["January","February","March","April","May","June","July","August","September","October","November","December"],"monthNamesShort":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],"nextText":"Next","prevText":"Previous","dayNames":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"dayNamesShort":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dayNamesMin":["S","M","T","W","T","F","S"],"dateFormat":"MM d, yy","firstDay":1,"isRTL":false});}); //# sourceURL=jquery-ui-datepicker-js-after </script> <script id="lfb_f_js-js-extra"> var frontendajax = {"ajaxurl":"https://pikhome.com/wp-admin/admin-ajax.php"}; //# sourceURL=lfb_f_js-js-extra </script> <script id="lfb_f_js-js" src="https://pikhome.com/wp-content/plugins/lead-form-builder/js/f-script.js?ver=1.7.4"></script> <script id="flexslider-js" src="https://pikhome.com/wp-content/plugins/woocommerce/assets/js/flexslider/jquery.flexslider.min.js?ver=2.7.2-wc.6.2.2"></script> <script id="wp-emoji-settings" type="application/json"> {"baseUrl":"https://s.w.org/images/core/emoji/17.0.2/72x72/","ext":".png","svgUrl":"https://s.w.org/images/core/emoji/17.0.2/svg/","svgExt":".svg","source":{"concatemoji":"https://pikhome.com/wp-includes/js/wp-emoji-release.min.js?ver=7.0"}} </script> <script type="module"> /*! This file is auto-generated */ const a=JSON.parse(document.getElementById("wp-emoji-settings").textContent),o=(window._wpemojiSettings=a,"wpEmojiSettingsSupports"),s=["flag","emoji"];function i(e){try{var t={supportTests:e,timestamp:(new Date).valueOf()};sessionStorage.setItem(o,JSON.stringify(t))}catch(e){}}function c(e,t,n){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);t=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(n,0,0);const a=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);return t.every((e,t)=>e===a[t])}function p(e,t){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);var n=e.getImageData(16,16,1,1);for(let e=0;e<n.data.length;e++)if(0!==n.data[e])return!1;return!0}function u(e,t,n,a){switch(t){case"flag":return n(e,"\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f","\ud83c\udff3\ufe0f\u200b\u26a7\ufe0f")?!1:!n(e,"\ud83c\udde8\ud83c\uddf6","\ud83c\udde8\u200b\ud83c\uddf6")&&!n(e,"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f","\ud83c\udff4\u200b\udb40\udc67\u200b\udb40\udc62\u200b\udb40\udc65\u200b\udb40\udc6e\u200b\udb40\udc67\u200b\udb40\udc7f");case"emoji":return!a(e,"\ud83e\u1fac8")}return!1}function f(e,t,n,a){let r;const o=(r="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?new OffscreenCanvas(300,150):document.createElement("canvas")).getContext("2d",{willReadFrequently:!0}),s=(o.textBaseline="top",o.font="600 32px Arial",{});return e.forEach(e=>{s[e]=t(o,e,n,a)}),s}function r(e){var t=document.createElement("script");t.src=e,t.defer=!0,document.head.appendChild(t)}a.supports={everything:!0,everythingExceptFlag:!0},new Promise(t=>{let n=function(){try{var e=JSON.parse(sessionStorage.getItem(o));if("object"==typeof e&&"number"==typeof e.timestamp&&(new Date).valueOf()<e.timestamp+604800&&"object"==typeof e.supportTests)return e.supportTests}catch(e){}return null}();if(!n){if("undefined"!=typeof Worker&&"undefined"!=typeof OffscreenCanvas&&"undefined"!=typeof URL&&URL.createObjectURL&&"undefined"!=typeof Blob)try{var e="postMessage("+f.toString()+"("+[JSON.stringify(s),u.toString(),c.toString(),p.toString()].join(",")+"));",a=new Blob([e],{type:"text/javascript"});const r=new Worker(URL.createObjectURL(a),{name:"wpTestEmojiSupports"});return void(r.onmessage=e=>{i(n=e.data),r.terminate(),t(n)})}catch(e){}i(n=f(s,u,c,p))}t(n)}).then(e=>{for(const n in e)a.supports[n]=e[n],a.supports.everything=a.supports.everything&&a.supports[n],"flag"!==n&&(a.supports.everythingExceptFlag=a.supports.everythingExceptFlag&&a.supports[n]);var t;a.supports.everythingExceptFlag=a.supports.everythingExceptFlag&&!a.supports.flag,a.supports.everything||((t=a.source||{}).concatemoji?r(t.concatemoji):t.wpemoji&&t.twemoji&&(r(t.twemoji),r(t.wpemoji)))}); //# sourceURL=https://pikhome.com/wp-includes/js/wp-emoji-loader.min.js </script> </body> </html>