HUSKY - Product Filter for WooCommerce

Smart Designer — Éléments de filtre personnalisés

Cette extension vous permet de créer des éléments de filtre personnalisés

Site de démonstration : https://demo-sd.products-filter.com/

Par défaut, WOOF SD dispose de 4 éléments de base prêts à être personnalisés :

  • Case à cocher (par défaut)
  • Bouton radio
  • Interrupteur
  • Couleur

Vous trouverez plus d'éléments personnalisés dans la Galerie WOOF SD. Si vous avez une idée concernant votre élément personnalisé, écrivez-nous sur le support.

 


Panneau supérieur

  • Retour – revenir à la liste des éléments
  • Préréglages – l'administrateur peut enregistrer l'ensemble actuel d'options, puis les appliquer à d'autres éléments du même type
  • Liste déroulante avec tous les types d'éléments possibles du système. ‘Box tags‘ sur l'écran ci-dessus est un élément personnalisé placé dans le thème enfant WordPress. Lisez ci-dessous comment en créer.
  • Liste déroulante avec toutes les taxonomies réelles WooCommerce de la boutique, uniquement pour une aide visuelle lors de la construction d'un élément de filtre. S'utilise également pour le type d'élément ‘Couleur’ afin d'attacher des couleurs et des images aux termes de la taxonomie sélectionnée par cette liste déroulante (lisez à propos de la Couleur ci-dessous)
  • Réinitialiser – cliquez pour réinitialiser toutes les options personnalisées de l'élément de filtre actuel aux valeurs par défaut

Créer et appliquer

  • Dans l'onglet ‘Extensions‘, activez l'extension ‘Smart Designer‘ (si elle n'est pas activée) et appuyez sur le bouton Enregistrer
  • Après le rechargement de la page, allez dans l'onglet ‘Smart Designer
  • Cliquez sur le bouton ‘Créer un élément
  • Définissez le titre du nouvel élément (cliquez sur son champ)
  • Cliquez sur le bouton ‘Modifier‘ pour accéder aux options du nouvel élément
  • Lorsque vous êtes entré dans les options de l'élément, vous devez sélectionner son type : Case à cocher, Bouton radio, Interrupteur, Couleur ou un autre selon les éléments installés sur votre site WordPress (les types d'éléments personnalisés sont décrits ci-dessous). Chaque type possède son propre ensemble d'options qui ne se chevauchent pas avec celles d'autres types d'éléments !
  • Tous les éléments de base sauf les interrupteurs ont également des modèles de disposition (liste, tuile ou radio, case à cocher), choisissez celui qui correspond à vos besoins.
  • Pour votre commodité, vous pouvez sélectionner la taxonomie pour laquelle vous créez l'élément actuel
  • Jouez avec les options en utilisant leur description pour créer les personnalisations souhaitées
  • Toutes les modifications sont enregistrées automatiquement par ajax
  • Lorsque vous estimez que c'est suffisant, vous pouvez cliquer sur le bouton ‘Préréglages‘ et y enregistrer vos options personnalisées pour les éléments futurs (pour ne pas repartir de zéro avec un nouvel élément)
  • La dernière étape consiste à aller dans l'onglet ‘Structure‘ et à attacher à une taxonomie le type d'élément que vous venez de créer. Tous les éléments créés avec Smart Designer ont le préfixe ‘SD:‘ dans leur titre.
  • Appuyez sur le bouton Enregistrer ci-dessous
  • Allez sur le front-end de la boutique et profitez-en 🙂

Conseils concernant les personnalisations

  • Si vous ne savez pas quelle famille de polices appliquer pour le texte, utilisez le mot ‘inherit‘, cela appliquera la famille de polices actuelle du thème WordPress. Et rappelez-vous que si vous appliquez une famille de polices, elle doit être prise en charge par votre thème WordPress actuel et il n'y a aucune garantie que cette police soit incluse dans le site wp-admin, donc les résultats visuels ne seront pas identiques à 100 % entre le back-end et le front-end.
  • Si vous n'avez pas besoin de couleur pour vos images d'arrière-plan PNG transparentes, utilisez le mot ‘transparent‘ au lieu du code hexadécimal de la couleur.
  • Vous pouvez trouver différents motifs d'images en utilisant Google avec la phrase de recherche ‘images de motifs d'arrière-plan
  • Si vous cherchez des couleurs de beauté, vous pouvez les trouver ici, par exemple https://codebeautify.org/hex-to-pantone-converter
  • Convertisseur de code couleur https://rgbacolorpicker.com/hex-to-rgba

Préréglages

Les préréglages sauvegardent vos options afin que vous puissiez les appliquer à des éléments similaires, ce qui réduit le temps de production. Vous pouvez faire ce qui suit :

  • Créer des préréglages
  • Appliquer les préréglages à de nouveaux éléments du même type (case à cocher, bouton radio, couleur, commutateur, tout type personnalisé) – il suffit de cliquer sur son titre. Par exemple, un préréglage créé pour le bouton radio est invisible pour la case à cocher et vice versa.
  • Partager votre préréglage en tant qu'informations textuelles avec une autre personne (développeurs, collègues, sites, etc.). Cliquez sur le bouton œil.
  • Importer le code de préréglage partagé avec vous par quelqu'un. Cliquez sur le bouton d'édition. Collez le code. Appuyez sur le bouton ‘Importer‘.

Couleur

L'élément Couleur est un élément spécial qui a sa propre fonctionnalité – l'attribution de couleurs et d'images pour chaque terme de la taxonomie sélectionnée (voir le menu déroulant avant le bouton ‘Réinitialiser’) à l'aide d'une fenêtre contextuelle

Les données sont stockées dans des clés méta de terme spéciales :

  • woof_sd_color
  • woof_sd_color_image

Ces clés peuvent être surchargées dans le fichier functions.php du thème WordPress actuel pour les cas où vous avez déjà défini des options de couleur pour vos termes à votre manière, utilisez les hooks suivants :

  • get_woof_sd_term_color_key – hook pour stocker les données de couleur des termes de taxonomie
    add_filter('get_woof_sd_term_color', function ($term_id) {
        $meta_key = '__YOUR_OWN_KEY__';
        $color = get_term_meta($term_id, $meta_key, true);//you can use your own code to get term color using its $term_id
        return $color ? $color : 'inherit';
    });
  • get_woof_sd_term_color_image_key– hook pour stocker les données d'image des termes de taxonomie
    add_filter('get_woof_sd_term_color_image', function ($term_id) {
        $meta_key = '__YOUR_OWN_KEY__';
        $img = get_term_meta($term_id, $meta_key, true);//you can use your own code to get term color using its $term_id
        return $img ? $img : '__YOU_CAN_PLACE_HERE_YOUR_DEFAULT_IMAGE_LINK__';
    });

Éléments personnalisés pour développeurs uniquement

WOOF SD permet aux développeurs de créer leurs propres éléments personnalisés, tout ce qui est nécessaire est un bon code CSS+HTML créé. Voici un exemple : https://codepen.io/quinlo/pen/ReMRXz – cela suffit pour créer un élément de filtre, vous pouvez le voir sur le site de démonstration -> ‘Étiquettes de produits

Sur l'image ci-dessous, vous pouvez voir comment ajouter un tel élément dans le système :

  • sur le thème WordPress actuel (il est préférable d'utiliser un thème enfant) créez un dossier ‘woof’
  • dans le dossier ‘woof‘ créez un dossier ‘ext
  • dans le dossier ‘ext‘ créez un dossier ‘smart_designer
  • dans le dossier ‘smart_designer‘ créez un dossier elements
  • dans le dossier ‘elements‘ créez un dossier avec le nom de votre choix, utilisez un underscore si nécessaire
  • le dossier du type d'élément personnalisé doit contenir les fichiers suivants :
    • css/styles.css – tout le code CSS de l'élément
    • js/ie.js – votre classe JS, étend IE, il suffit de copier-coller :
      'use strict';
      import {IE, Helper} from '../../../import.js';//created automatically
      //This class is for constructor on backend
      //!!Rename class and put its name into file data.php field js_class
      export default class Boxtags extends IE {
          draw() {
              super.draw();
      
              Helper.ajax(null, {}, template => {
                  let terms = this.visor.sd.demo_taxonomies_terms;
                  let block = this.assemble_terms(terms, template);
      
                  this.container.insertAdjacentHTML('afterbegin', block);
                  if (this.container.querySelectorAll('input')) {
                      this.container.querySelectorAll('input')[0].setAttribute('checked', true);//for visual test
                  }
      
                  this.container.className = `woof_list_${this.template_folder}_sd_${this.template_num}`;
                  this.wrapper.appendChild(this.container);
              }, false, this.template_url);
          }
      }
      

      Renommez votre classe JS (au lieu de Boxtags), c'est important et utilisé dans le fichier data.php

    • templates/tpl.php – peut également avoir plus de fichiers si nécessaire, nommez-les tpl-1.php, tpl-2.php, etc. Tous les fichiers de template doivent être déclarés dans le fichier data.php.
    • data.php – voici un tableau d'options, dont les clés sont utilisées dans le fichier css/styles.css et aussi les templates
      <?php
      
      if (!defined('ABSPATH'))
          die('No direct access allowed');
      //View is managed by the Data!
      return [
          'title' => 'Box tags', //!!
          'prefix' => 'boxtags_', //!!unique prefix for css vars
          'js_class' => 'Boxtags', //!!important, class name from ie.js
          'templates' => [
              0 => [
                  'title' => esc_html__('Template #1', 'woocommerce-products-filter'),
                  'use_subterms' => 0//will subterms display or only parent terms depending of the current taxonomy
              ]
          ],
          'template' => 0,
          'demo_taxonomies' => [
              0 => esc_html__('Example terms by real taxonomy', 'woocommerce-products-filter')
          ],
          'selected_demo_taxonomy' => 0, //demo data for visor
          'sections' => [
              [
                  'title' => esc_html__('Terms', 'woocommerce-products-filter'),
                  'table' => [
                      'header' => [
                          [
                              'value' => esc_html__('Options', 'woocommerce-products-filter'),
                              'width' => '50%',
                              'action' => 'save_custom_element_option'
                          ],
                          [
                              'value' => esc_html__('Description', 'woocommerce-products-filter'),
                              'width' => '50%',
                          ],
                      ],
                      'rows' => [
                          'padding_vertical' => [
                              ['value' => ['element' => 'ranger', 'value' => 8, 'min' => 0, 'max' => 30], 'measure' => 'px'],
                              ['value' => esc_html__('Padding vertical', 'woocommerce-products-filter')]
                          ],
                          'padding_side' => [
                              ['value' => ['element' => 'ranger', 'value' => 12, 'min' => 0, 'max' => 30], 'measure' => 'px'],
                              ['value' => esc_html__('Padding horizontal', 'woocommerce-products-filter')]
                          ],
                          'font_family' => [
                              ['value' => ['element' => 'text', 'value' => 'Segoe UI'], 'measure' => ''],
                              ['value' => esc_html__('Text font family (theme must support)', 'woocommerce-products-filter'), 'help' => '#']
                          ],
                          'font_size' => [
                              ['value' => ['element' => 'ranger', 'value' => 13, 'min' => 8, 'max' => 24], 'measure' => 'px'],
                              ['value' => esc_html__('Text font size', 'woocommerce-products-filter')]
                          ],
                          'font_weight' => [
                              ['value' => ['element' => 'select', 'value' => 400, 'options' => [
                                          '100' => '100',
                                          '200' => '200',
                                          '300' => '300',
                                          '400' => '400',
                                          '500' => '500',
                                          '600' => '600',
                                          '700' => '700',
                                          '800' => '800'
                                      ], 'conditions' => []]],
                              ['value' => 'Text font weight'], //cell
                          ],
                          'color' => [
                              ['value' => ['element' => 'color', 'value' => '#adadad']],
                              ['value' => esc_html__('Text color', 'woocommerce-products-filter')]
                          ],
                          'margin_right' => [
                              ['value' => ['element' => 'ranger', 'value' => 5, 'min' => 0, 'max' => 30], 'measure' => 'px'],
                              ['value' => esc_html__('Margin right', 'woocommerce-products-filter')]
                          ],
                          'margin_bottom' => [
                              ['value' => ['element' => 'ranger', 'value' => 5, 'min' => 0, 'max' => 30], 'measure' => 'px'],
                              ['value' => esc_html__('Margin bottom', 'woocommerce-products-filter')]
                          ],
                          'bg_color_r' => [
                              ['value' => ['element' => 'ranger', 'value' => 255, 'min' => 0, 'max' => 255], 'measure' => ''],
                              ['value' => esc_html__('Background color red channel', 'woocommerce-products-filter')]
                          ],
                          'bg_color_g' => [
                              ['value' => ['element' => 'ranger', 'value' => 255, 'min' => 0, 'max' => 255], 'measure' => ''],
                              ['value' => esc_html__('Background color green channel', 'woocommerce-products-filter')]
                          ],
                          'bg_color_b' => [
                              ['value' => ['element' => 'ranger', 'value' => 255, 'min' => 0, 'max' => 255], 'measure' => ''],
                              ['value' => esc_html__('Background color blue channel', 'woocommerce-products-filter')]
                          ],
                          'bg_color_op' => [
                              ['value' => ['element' => 'ranger', 'value' => 9, 'min' => 0, 'max' => 10], 'measure' => ''],
                              ['value' => esc_html__('Background color opacity', 'woocommerce-products-filter')]
                          ],
                          'bg_image' => [
                              ['value' => ['element' => 'image', 'value' => ''], 'before' => 'url(', 'after' => ')'], //cell
                              ['value' => esc_html__('Background image', 'woocommerce-products-filter')] //cell
                          ],
                          'border_width' => [
                              ['value' => ['element' => 'ranger', 'value' => 2, 'min' => 0, 'max' => 10], 'measure' => 'px'],
                              ['value' => esc_html__('Border width', 'woocommerce-products-filter')]
                          ],
                          'border_style' => [
                              ['value' => ['element' => 'select', 'value' => 'solid', 'options' => [
                                          'dotted' => 'dotted',
                                          'dashed' => 'dashed',
                                          'solid' => 'solid',
                                          'double' => 'double',
                                          'groove' => 'groove',
                                          'ridge' => 'ridge',
                                          'inset' => 'inset',
                                          'outset' => 'outset',
                                          'none' => 'none',
                                          'hidden' => 'hidden'
                                      ]]],
                              ['value' => 'Border style'],
                          ],
                          'border_radius' => [
                              ['value' => ['element' => 'ranger', 'value' => 25, 'min' => 0, 'max' => 50], 'measure' => 'px'],
                              ['value' => esc_html__('Border radius', 'woocommerce-products-filter')]
                          ],
                          'border_color_r' => [
                              ['value' => ['element' => 'ranger', 'value' => 139, 'min' => 0, 'max' => 255], 'measure' => ''],
                              ['value' => esc_html__('Border color red channel', 'woocommerce-products-filter')]
                          ],
                          'border_color_g' => [
                              ['value' => ['element' => 'ranger', 'value' => 139, 'min' => 0, 'max' => 255], 'measure' => ''],
                              ['value' => esc_html__('Border color green channel', 'woocommerce-products-filter')]
                          ],
                          'border_color_b' => [
                              ['value' => ['element' => 'ranger', 'value' => 139, 'min' => 0, 'max' => 255], 'measure' => ''],
                              ['value' => esc_html__('Border color blue channel', 'woocommerce-products-filter')]
                          ],
                          'border_color_op' => [
                              ['value' => ['element' => 'ranger', 'value' => 3, 'min' => 0, 'max' => 10], 'measure' => ''],
                              ['value' => esc_html__('Border color opacity', 'woocommerce-products-filter')]
                          ],
                          'checkbox_font_family' => [
                              ['value' => ['element' => 'text', 'value' => 'Font Awesome 5 Free'], 'measure' => '', 'before' => '"', 'after' => '"'],
                              ['value' => esc_html__('Checkbox font family (theme must support)', 'woocommerce-products-filter'), 'help' => '#']
                          ],
                          'checkbox_font_size' => [
                              ['value' => ['element' => 'ranger', 'value' => 12, 'min' => 8, 'max' => 72], 'measure' => 'px'],
                              ['value' => esc_html__('Checkbox font size', 'woocommerce-products-filter')]
                          ],
                          'checkbox_content' => [
                              ['value' => ['element' => 'text', 'value' => "\f067"], 'measure' => '', 'before' => '"', 'after' => '"'],
                              ['value' => esc_html__('Checkbox content', 'woocommerce-products-filter'), 'help' => '#']
                          ],
                          'checkbox_content_selected' => [
                              ['value' => ['element' => 'text', 'value' => "\f00c"], 'measure' => '', 'before' => '"', 'after' => '"'],
                              ['value' => esc_html__('Checkbox content selected', 'woocommerce-products-filter'), 'help' => '#']
                          ],
                          'transition' => [
                              ['value' => ['element' => 'ranger', 'value' => 200, 'min' => 0, 'max' => 1000], 'measure' => 's'], //cell
                              ['value' => esc_html__('Transition (ms)', 'woocommerce-products-filter')] //cell
                          ],
                      ]
                  ]
              ],
              [
                  'title' => esc_html__('Hovered(Selected) Terms', 'woocommerce-products-filter'),
                  'table' => [
                      'header' => [
                          [
                              'value' => esc_html__('Options', 'woocommerce-products-filter'),
                              'width' => '50%',
                              'action' => 'save_custom_element_option'
                          ],
                          [
                              'value' => esc_html__('Description', 'woocommerce-products-filter'),
                              'width' => '50%'
                          ],
                      ],
                      'rows' => [
                          'selected_color' => [
                              ['value' => ['element' => 'color', 'value' => '#ffffff']],
                              ['value' => esc_html__('Text color', 'woocommerce-products-filter')]
                          ],
                          'selected_bg_color_r' => [
                              ['value' => ['element' => 'ranger', 'value' => 18, 'min' => 0, 'max' => 255], 'measure' => ''],
                              ['value' => esc_html__('Background color red channel', 'woocommerce-products-filter')]
                          ],
                          'selected_bg_color_g' => [
                              ['value' => ['element' => 'ranger', 'value' => 187, 'min' => 0, 'max' => 255], 'measure' => ''],
                              ['value' => esc_html__('Background color green channel', 'woocommerce-products-filter')]
                          ],
                          'selected_bg_color_b' => [
                              ['value' => ['element' => 'ranger', 'value' => 212, 'min' => 0, 'max' => 255], 'measure' => ''],
                              ['value' => esc_html__('Background color blue channel', 'woocommerce-products-filter')]
                          ],
                          'selected_bg_color_op' => [
                              ['value' => ['element' => 'ranger', 'value' => 10, 'min' => 0, 'max' => 10], 'measure' => ''],
                              ['value' => esc_html__('Background color opacity', 'woocommerce-products-filter')]
                          ],
                          'selected_bg_image' => [
                              ['value' => ['element' => 'image', 'value' => ''], 'before' => 'url(', 'after' => ')'], //cell
                              ['value' => esc_html__('Background image', 'woocommerce-products-filter')] //cell
                          ],
                          'selected_border_color_r' => [
                              ['value' => ['element' => 'ranger', 'value' => 27, 'min' => 0, 'max' => 255], 'measure' => ''],
                              ['value' => esc_html__('Border color red channel', 'woocommerce-products-filter')]
                          ],
                          'selected_border_color_g' => [
                              ['value' => ['element' => 'ranger', 'value' => 219, 'min' => 0, 'max' => 255], 'measure' => ''],
                              ['value' => esc_html__('Border color green channel', 'woocommerce-products-filter')]
                          ],
                          'selected_border_color_b' => [
                              ['value' => ['element' => 'ranger', 'value' => 248, 'min' => 0, 'max' => 255], 'measure' => ''],
                              ['value' => esc_html__('Border color blue channel', 'woocommerce-products-filter')]
                          ],
                          'selected_border_color_op' => [
                              ['value' => ['element' => 'ranger', 'value' => 10, 'min' => 0, 'max' => 10], 'measure' => ''],
                              ['value' => esc_html__('Border color opacity', 'woocommerce-products-filter')]
                          ],
                          'selected_border_width' => [
                              ['value' => ['element' => 'ranger', 'value' => 2, 'min' => 0, 'max' => 10], 'measure' => 'px'],
                              ['value' => esc_html__('Border width', 'woocommerce-products-filter')]
                          ],
                          'selected_border_style' => [
                              ['value' => ['element' => 'select', 'value' => 'solid', 'options' => [
                                          'dotted' => 'dotted',
                                          'dashed' => 'dashed',
                                          'solid' => 'solid',
                                          'double' => 'double',
                                          'groove' => 'groove',
                                          'ridge' => 'ridge',
                                          'inset' => 'inset',
                                          'outset' => 'outset',
                                          'none' => 'none',
                                          'hidden' => 'hidden'
                                      ]]],
                              ['value' => 'Border style'],
                          ],
                          'selected_scale' => [
                              ['value' => ['element' => 'ranger', 'value' => 100, 'min' => 50, 'max' => 200], 'measure' => ''], //cell
                              ['value' => esc_html__('Scale', 'woocommerce-products-filter')] //cell
                          ],
                      ]
                  ]
              ],
              [
                  'title' => esc_html__('Counter', 'woocommerce-products-filter'),
                  'table' => [
                      'header' => [
                          [
                              'value' => esc_html__('Options', 'woocommerce-products-filter'),
                              'width' => '50%',
                              'action' => 'save_custom_element_option'
                          ],
                          [
                              'value' => esc_html__('Description', 'woocommerce-products-filter'),
                              'width' => '50%',
                          ]
                      ],
                      'rows' => [
                          'counter_show' => [
                              ['value' => ['element' => 'switcher', 'value' => 'inline-flex', 'yes' => 'inline-flex', 'no' => 'none']], //cell
                              ['value' => esc_html__('Show counter', 'woocommerce-products-filter')] //cell
                          ],
                          'counter_width' => [
                              ['value' => ['element' => 'ranger', 'value' => 14, 'min' => 10, 'max' => 72, 'conditions' => [
                                          'hide' => [
                                              'counter_show' => 'none'//if this selected element will be hidden
                                          ]]], 'measure' => 'px'],
                              ['value' => esc_html__('Min width', 'woocommerce-products-filter')]
                          ],
                          'counter_height' => [
                              ['value' => ['element' => 'ranger', 'value' => 14, 'min' => 10, 'max' => 72, 'conditions' => [
                                          'hide' => [
                                              'counter_show' => 'none'//if this selected element will be hidden
                                          ]]], 'measure' => 'px'],
                              ['value' => esc_html__('Min height', 'woocommerce-products-filter')]
                          ],
                          'counter_top' => [
                              ['value' => ['element' => 'ranger', 'value' => -2, 'min' => -100, 'max' => 100, 'conditions' => [
                                          'hide' => [
                                              'counter_show' => 'none'//if this selected element will be hidden
                                          ]]], 'measure' => 'px'], //cell
                              ['value' => esc_html__('Top', 'woocommerce-products-filter')] //cell
                          ],
                          'counter_right' => [
                              ['value' => ['element' => 'ranger', 'value' => -3, 'min' => -100, 'max' => 100, 'conditions' => [
                                          'hide' => [
                                              'counter_show' => 'none'//if this selected element will be hidden
                                          ]]], 'measure' => 'px'],
                              ['value' => esc_html__('Right', 'woocommerce-products-filter')]
                          ],
                          'counter_font_size' => [
                              ['value' => ['element' => 'ranger', 'value' => 9, 'min' => 8, 'max' => 48, 'conditions' => [
                                          'hide' => [
                                              'counter_show' => 'none'//if this selected element will be hidden
                                          ]]], 'measure' => 'px'], //cell
                              ['value' => esc_html__('Text font size', 'woocommerce-products-filter')] //cell
                          ],
                          'counter_color' => [
                              ['value' => ['element' => 'color', 'value' => '#777777', 'conditions' => [
                                          'hide' => [
                                              'counter_show' => 'none'//if this selected element will be hidden
                                          ]]]], //cell
                              ['value' => esc_html__('Text color', 'woocommerce-products-filter')] //cell
                          ],
                          'counter_font_family' => [
                              ['value' => ['element' => 'text', 'value' => 'consolas', 'conditions' => [
                                          'hide' => [
                                              'counter_show' => 'none'//if this selected element will be hidden
                                          ]]], 'measure' => ''], //cell
                              ['value' => esc_html__('Text font family (theme must support)', 'woocommerce-products-filter')], //cell
                          ],
                          'counter_font_weight' => [
                              ['value' => ['element' => 'select', 'value' => 500, 'options' => [
                                          '100' => '100',
                                          '200' => '200',
                                          '300' => '300',
                                          '400' => '400',
                                          '500' => '500',
                                          '600' => '600',
                                          '700' => '700',
                                          '800' => '800'
                                      ], 'conditions' => [
                                          'hide' => [
                                              'counter_show' => 'none'//if this selected element will be hidden
                                          ]]]],
                              ['value' => 'Text font weight'], //cell
                          ],
                          'counter_side_padding' => [
                              ['value' => ['element' => 'ranger', 'value' => 0, 'min' => 0, 'max' => 48, 'conditions' => [
                                          'hide' => [
                                              'counter_show' => 'none'//if this selected element will be hidden
                                          ]]], 'measure' => 'px'], //cell
                              ['value' => esc_html__('Side padding', 'woocommerce-products-filter')] //cell
                          ],
                          'counter_bg_color' => [
                              ['value' => ['element' => 'color', 'value' => '#ffffff', 'conditions' => [
                                          'hide' => [
                                              'counter_show' => 'none'//if this selected element will be hidden
                                          ]]]], //cell
                              ['value' => esc_html__('Background color', 'woocommerce-products-filter')] //cell
                          ],
                          'counter_bg_image' => [
                              ['value' => ['element' => 'image', 'value' => '', 'conditions' => [
                                          'hide' => [
                                              'counter_show' => 'none'//if this selected element will be hidden
                                          ]]], 'before' => 'url(', 'after' => ')'], //cell
                              ['value' => esc_html__('Background image', 'woocommerce-products-filter')] //cell
                          ],
                          'counter_border_width' => [
                              ['value' => ['element' => 'ranger', 'value' => 1, 'min' => 0, 'max' => 10, 'conditions' => [
                                          'hide' => [
                                              'counter_show' => 'none'//if this selected element will be hidden
                                          ]]], 'measure' => 'px'], //cell
                              ['value' => esc_html__('Border width', 'woocommerce-products-filter')] //cell
                          ],
                          'counter_border_radius' => [
                              ['value' => ['element' => 'ranger', 'value' => 50, 'min' => 0, 'max' => 50, 'conditions' => [
                                          'hide' => [
                                              'counter_show' => 'none'//if this selected element will be hidden
                                          ]]], 'measure' => '%'], //cell
                              ['value' => esc_html__('Border radius', 'woocommerce-products-filter')] //cell
                          ],
                          'counter_border_color' => [
                              ['value' => ['element' => 'color', 'value' => '#adadad', 'conditions' => [
                                          'hide' => [
                                              'counter_show' => 'none'//if this selected element will be hidden
                                          ]]]], //cell
                              ['value' => esc_html__('Border color', 'woocommerce-products-filter')] //cell
                          ],
                          'counter_border_style' => [
                              ['value' => ['element' => 'select', 'value' => 'solid', 'options' => [
                                          'dotted' => 'dotted',
                                          'dashed' => 'dashed',
                                          'solid' => 'solid',
                                          'double' => 'double',
                                          'groove' => 'groove',
                                          'ridge' => 'ridge',
                                          'inset' => 'inset',
                                          'outset' => 'outset',
                                          'none' => 'none',
                                          'hidden' => 'hidden'
                                      ], 'conditions' => [
                                          'hide' => [
                                              'counter_show' => 'none'//if this selected element will be hidden
                                          ]]]],
                              ['value' => 'Border style'], //cell
                          ],
                      ]
                  ]
              ],
          ]
      ];
      
      
    • Dans le fichier data.php, portez votre attention sur les champs : title – nom de votre élément dans le panneau supérieur de SD, prefix – préfixe unique pour les variables CSS, js_class – important, nom de la classe depuis ie.js
    • Ensuite, dans le fichier tpl.php, ajoutez votre code HTML :
      <?php $custom_postfix = 'boxtags'; ?>
      <div class="woof-sd-ie woof-sd-ie-<?php echo $custom_postfix ?> woof-sd-ie-<?php echo $custom_postfix ?>___TERM_ID__ __CLASS__">
          <input type="checkbox" hidden id="__ID__"
                 data-tax="__DATA_TAX__" 
                 name="__SLUG__" data-term-id="__TERM_ID__" 
                 value="__VALUE__" __CHECKED__ __DISABLED__
                 onchange="woof_checkbox_process_data(this, this.checked)"
                 hidden
                 />
          <label for="__ID__">
              <span>__CONTENT__ <span class="woof-sd-ie-count">__COUNT__</span></span>
          </label>
      
          <input type="hidden" value="__TERM_NAME__" data-anchor="woof_n___DATA_ANCHOR__" />
      
      </div>

      N'oubliez pas de changer la variable $custom_postfix par le nom du dossier de votre élément (le même champ prefix du fichier data.php).

      • Le template contient des chaînes spéciales qui sont remplacées à la volée lorsque WOOF SD affiche les balises sur le front :
        • __TERM_ID__ – ID du terme imprimé actuel
        • __CLASS__ – classe CSS système
        • __DATA_TAX__ – nom de la taxonomie du terme actuel
        • __SLUG__ – slug du terme actuel
        • __ID__ – identifiant généré automatiquement pour le label
        • __VALUE__ – valeur sélectionnée ici
        • __CHECKED__ – doit être dans la case à cocher ou le bouton radio pour le rendre sélectionné ou non
        • __DISABLED__ – doit être dans la case à cocher ou le bouton radio pour le rendre désactivé ou non
        • __CONTENT__ – titre du terme à afficher aux clients
        • __COUNT__ – nombre de termes
        • __RESET_RADIO_BTN__ – utilisé uniquement pour le bouton radio pour réinitialiser le bouton radio sélectionné sur le front
        • __DATA_ANCHOR__ – toujours requis pour l'input caché
        • __TERM_NAME__ – nom du terme actuel
      • Utilisez un wrapper div toujours le même que dans l'exemple ci-dessus, et à l'intérieur votre code HTML. Les deux inputs, en tant que case à cocher ou bouton radio + input caché doivent toujours être présents !
  • Champs :

    • templates – ajoute des templates de disposition du même élément, ou de son comportement (bouton radio ou case à cocher).
    • template – numéro du template sélectionné par défaut
    • demo_taxonomies – utilisez tel quel dans le code ci-dessus, nécessaire pour afficher les taxonomies de boutique dans le constructeur
    • sections – ici les options sont placées en lignes, elles ont leurs propres clés uniques (relativement au fichier data.php) et elles sont de différents types :
      • ranger – crée un contrôle de plage avec un curseur de min à max
        'padding_vertical' => [
              ['value' => ['element' => 'ranger', 'value' => 8, 'min' => 0, 'max' => 30], 'measure' => 'px'],
              ['value' => esc_html__('Padding vertical', 'woocommerce-products-filter')]
          ],

        Portez votre attention sur le champ ‘measure‘, il doit y avoir des unités de mesure adéquates

      • text – champ de texte
        'font_family' => [
            ['value' => ['element' => 'text', 'value' => 'Segoe UI'], 'measure' => ''],
            ['value' => esc_html__('Text font family (theme must support)', 'woocommerce-products-filter'), 'help' => '#']
        ],
      • select – menu déroulant pour sélectionner des valeurs prédéfinies
        'font_weight' => [
            ['value' => ['element' => 'select', 'value' => 400, 'options' => [
                        '100' => '100',
                        '200' => '200',
                        '300' => '300',
                        '400' => '400',
                        '500' => '500',
                        '600' => '600',
                        '700' => '700',
                        '800' => '800'
                    ], 'conditions' => []]],
            ['value' => 'Text font weight'], //cell
        ],
      • color – génère une entrée de couleur
        'color' => [
            ['value' => ['element' => 'color', 'value' => '#adadad']],
            ['value' => esc_html__('Text color', 'woocommerce-products-filter')]
        ],
      • image – génère une entrée de texte et un bouton à côté pour sélectionner une image depuis la galerie média du site
        'bg_image' => [
            ['value' => ['element' => 'image', 'value' => ''], 'before' => 'url(', 'after' => ')'], //cell
            ['value' => esc_html__('Background image', 'woocommerce-products-filter')] //cell
        ],
      • Dans tous les éléments, la valeur du champ a une valeur par défaut qui doit être la même que dans styles.css
      • toutes les clés à l'intérieur du fichier css doivent être utilisées avec le préfixe ‘–woof-sd-ie-‘ + préfixe pris du fichier data.php -> champ ‘prefix‘!
  • Le fichier woof/ext/smart_designer/import.js est créé automatiquement par le système et ne doit pas être modifié manuellement !!
  • En bref, vous pouvez télécharger un exemple d'élément personnalisé et le recréer en utilisant votre propre CSS et HTML