> For the complete documentation index, see [llms.txt](https://akyos.gitbook.io/book/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://akyos.gitbook.io/book/wordpress/back-office/regles.md).

# Règles

{% hint style="danger" %}
Règle n°1 : Pas d'anglais dans le nommage des champs
{% endhint %}

Pour toute la partie visible du back-office, ne pas nommer les champs en anglais.

Pas de "primary", "title", "button", "icon", "link" ect..

<figure><img src="/files/TPUF7qhNLPo1gHLA7VWO" alt=""><figcaption><p>C PAS BO</p></figcaption></figure>

<figure><img src="/files/CCEWjJC2tolWQQ2Obylh" alt=""><figcaption></figcaption></figure>

{% hint style="danger" %}
Règle n°2 : Séparation des champs contenu/style
{% endhint %}

Sauf exception pour certains groupe de champs (comme le titre ou le bouton), lorsque des champs qui formatent le design sont présents, il faut les séparer du reste des champs lié au contenu.

-> Créer une tab "**Design**" pour les champs simple qui concerne le design/layout, exemple : \
Alignement, Position, Sens, Couleur de fond...\
&#x20;\
-> Créer une tab "**Options**" s'il s'agit de champs spéciaux / de conditionnements : bref, tout ce qui n'est ni design, ni contenu.

<figure><img src="/files/Q9wdflnNVEOI03SsfQP3" alt=""><figcaption><p>Trop de champs de style qui devraient être dans une tab pour être caché à l'ouverture</p></figcaption></figure>

{% hint style="danger" %}
Règle n°3 : Rendez compréhensible les repeaters
{% endhint %}

En fonction du nombre de champs, certains repeaters sont difficilement lisibles.

-> Ne pas utiliser `->layout('row')` pour un repeater de 2 champs, ça allonge pas la page pour rien.

-> Jusqu'à la limite du possible, utiliser `->layout('table')` pour que les champs soient sur la même ligne (ça se fait jusqu'à 3/4 champs) sinon utilisez `'row'`

-> Utiliser la fonction `->collasped('title')` qui permet de replier une occurence du repeater sur un champ. On y gagne grandement en visibilité quand le repeater a le combo beaucoup de champs / beaucoup d'occurences.\
La fonction prend en paramètre l'id d'un des champs du repeater : privilégier un champ qui décrit l'ensemble de l'occurence (ex: le titre)

-> Utiliser la fonction `->buttonLabel('Ajouter un avis')` qui permet de personnaliser le texte du bouton d'ajout. Adieu le simple "Ajouter un élément".

{% hint style="danger" %}
Règle n°4 : Si le bloc est automatique, le préciser avec un message
{% endhint %}

Si le bloc n'a pas de champs, il faut toujours ajouter un champ de type `Message` précisant comment ce bloc récupère son contenu

```php
Message::('Les actualités sont ajoutées automatiquement')
```

```php
Message::('Rendez-vous dans "Options du thème" > "Logos partenaires" ')
```

{% hint style="danger" %}
Règle n°6 : On doit jamais avoir besoin d'ajouter du HTML dans un champ
{% endhint %}

Il ne faut jamais avoir besoin d'ajouter manuellement des `<br/> <b> <span>` dans un champ (notamment le textarea)

-> Utiliser la fonction `->newLines('br')` pour les textarea qui permet d'ajouter automatiquement un `<br/>` lorsqu'on fait un espace

-> Utiliser le filtre dans `filters.php` qui permet d'utiliser des caractères spéciaux pour wrapper un mot et de transformer ces caractères spéciaux en balise HTML dans un textarea.

{% hint style="danger" %}
Règle n°7 : Spécifier quand un champ est facultatif ou obligatoire
{% endhint %}

Pour rendre un champ optionnel, utiliser `ConditionnalLogic` combiné à un champ qui permettra le conditionnement, ça peut être :

* Un Select pour plusieurs choix possibles
* Un TrueFalse pour afficher un champ en particulier

Bien penser à cacher les champs non concernés par le choix.

-> L'autre possibilité est de spécifier `->instructions('Ce champ est facultatif')` et de s'assurer que ça ne provoque pas d'erreur.\
C'est utile quand on a une longue liste de champs et qu'on ne va pas ajouter un conditionnement pour chaque champ.

-> De même, préciser avec `->required()` quand le champ est indispensable, sans quoi il casserait le design.

Dans tous les cas, il ne faut pas hésiter à spécifier si le champ est obligatoire au bon fonctionnement du bloc ou s'il est facultatif

{% hint style="danger" %}
Règle n°8 : Utiliser columns()
{% endhint %}

Tous les champs ACF possèdent la fonction `columns()` qui permet de placer le champ autrement que sur toute la largeur
