web-dev-qa-db-fra.com

Paramètres de thème modulaire

Je cherche des conseils sur la meilleure façon de stocker une série de paramètres pour un thème modulaire.

À noter:

  • Les paramètres ne seront pas orientés vers l'utilisateur (ne convient pas à l'api du personnalisateur).
  • Idéalement, les options ne seraient pas stockées dans la base de données car elles seraient statiques (pour la performance).
  • Le thème n'est pas public, il sera utilisé comme cadre pour plusieurs sites.

J'ai jeté add_option/get_option qui utilise la base de données, de même que pour get_theme_mod/set_theme_mod.

J'utilise actuellement un tableau global - ce qui n'est pas idéal (d'après ce que j'ai lu).

D'autres pensées/suggestions?

5
addedlovely

Si un utilisateur ne peut pas les changer, alors ce ne sont pas des options, ce sont des constantes. Déclarez-les en utilisant const dans votre fichier de thème maim (probablement functions.php, mais tous les autres fichiers toujours chargés le feront), et utilisez-les partout où vous avez utilisé le tableau "options" maintenant.

Si vous souhaitez le contrôler sans modifier vos fichiers de thème, vous pouvez utiliser une variable define conditionnelle (vérifiez si la valeur n'est pas encore définie et si ce n'est pas le cas). Ainsi, vous pourrez remplacer les valeurs par défaut en les définissant dans le fichier wp-config.php par site.

... Mais toute cette question semble mal. La base de données est là, il suffit donc de l'utiliser, et il est facile de créer une interface utilisateur de base pour contrôler les options. Il n'y a pas de vraie raison de recourir aux changements de code chaque fois que vous souhaitez activer/désactiver un module.

3
Mark Kaplun

Premier choix

Je ne voudrais pas ignorer les options de base de données depuis le début, ce serait mon premier choix puisque theme_mods dépend du thème.

Au fur et à mesure des performances, les options wp sont automatiquement chargées et utilisent le système de cache persistant de WordPress (vous pouvez le voir en action sur wp_cache_get ). Ils sont aussi bons qu'un objet global.

Deuxième choix

Cela pourrait être une raison de ne pas stocker ces paramètres sous forme d’options s’ils sont presque statiques (s’ils changent rarement) et ils devraient simplement définir les modules/parties du thème qui doivent être chargés ou non.

Dans ce cas, je choisirais un fichier config.json, qui devrait être chargé avec file_get_content . De cette façon, vous pouvez définir une configuration par défaut dans la structure (quelque chose comme config.example.json) et la copier-coller sur vos sites Web.

2
Andrei