Performances avec chargement automatique et tableau d'options

12

Je joue avec la autoloadcolonne de la optionstable. Je n'ai pas trouvé beaucoup d'informations sur la façon dont les valeurs chargées automatiquement sont utilisées. J'ai essayé un print_r($GLOBALS)et j'ai vu que les options de chargement automatique sont stockées dans $GLOBALS['wp_object_cache']->cache['options']['alloptions'].

Existe-t-il un autre moyen d'accéder à ces variables?

Supposons que je doive accéder à une option my_option, qui a été définie sur le chargement automatique, plusieurs fois dans différents modèles (par exemple header.php, une fois dans , une fois dans footer.php), quelle méthode est recommandée?

  1. Est-il correct que je le récupère du $GLOBALStableau (puisque la valeur est déjà là)
  2. Dois-je utiliser get_option('my_option')une fois et globaliser à nouveau la variable
  3. À utiliser à get_option('my_option')chaque fois (ce que je ne vois pas l'intérêt de faire)
  4. Autre chose
RRikesh
la source

Réponses:

23

Je n'ai pas trouvé beaucoup d'informations sur la façon dont les valeurs chargées automatiquement sont utilisées.

Il n'y a pas de cas particulier pour les options chargées automatiquement, elles sont utilisées de la même manière que les autres options normales, mais permettent de comprendre ce que signifie la autoloadcolonne du optionstableau. Cette colonne détermine si nous devons extraire une option au stade de l'initialisation d'une demande ou si nous devons extraire une option uniquement sur demande.

Mais quand ce chargement automatique se produit et quelle fonction cela fait-il? Toutes les options de chargement automatique sont chargées et mises en cache par wp_load_alloptionsfonction, qui est appelée par is_blog_installedfonction au début de chaque requête HTTP, gérée par WP.

Résumons: l'option de chargement automatique est la même option, mais chargée au début du traitement des requêtes HTTP par WP.

Supposons que j'ai besoin d'accéder à une option ... quelle méthode est recommandée?

  1. C'est une mauvaise approche de le récupérer $GLOBALSdirectement, utilisez get_optionplutôt
  2. Globaliser les variables personnalisées n'est pas le bienvenu et il est recommandé de le faire le moins possible
  3. De mon point de vue, c'est la meilleure option pour vous
  4. Ne pense même pas à autre chose :)

Pourquoi utiliser la get_optionfonction à chaque fois est la meilleure option? Parce que:

  1. Le premier et le plus important car : vous pouvez être sûr qu'il renverra une valeur à jour, chaque fois que vous l'appelez.
  2. Il le mettra en cache pour une réutilisation future.
  3. Il permet à d'autres plugins et thèmes d'accrocher votre option en accrochant le option_optionnamefiltre.
  4. Il récupérera une option si elle n'est pas encore chargée.
Eugene Manuilov
la source
1
+1 réponse très informative. Jamais entendu parler de l'option crochet avant :)
RRikesh
@rrikesh ur bienvenue, j'espère que cela explique assez bien
Eugene Manuilov