Dans le livre 'Professional WordPress Development', j'ai trouvé cette astuce:
En règle générale, si vos options sont nécessaires à la partie publique du blog, enregistrez-les avec le chargement automatique. S'ils ne sont nécessaires que dans la zone d'administration, enregistrez-les sans chargement automatique.
Cela ne créerait-il pas beaucoup de requêtes SQL supplémentaires dans le backend si tous les développeurs de plug-in suivaient ce conseil, ralentissant ainsi le côté administrateur?
Quel serait un bon exemple d'utilisation de l'autoload avec des options de plug-in?
Personnellement, je suis en désaccord avec l'auteur du livre dans une certaine mesure. Si vous chargez automatiquement plusieurs options dans votre base de données lors de l'initialisation de Wordpress, vous effectuez une recherche qui ressemble à ceci: * "SELECT nom_option, valeur_option FROM wp_options WHERE autoload = 'yes'" - au début. Maintenant, imaginez que si vous disposiez de 40 options, il s’agit de 40 requêtes de base de données distinctes.
Toutefois, si vous chargez uniquement un tableau d'options sérialisé, il en existe potentiellement des centaines dans l'option stockée sous forme de chaîne sérialisée. Il n’est donc pas mauvais de charger automatiquement uniquement lorsque vous chargez plus d’une option à la fois.
J'ai vu des plugins abuser de l'API des options en ayant plusieurs options stockées séparément, ce qui est inutile. Alors rappelez-vous, toujours sérialiser sauf s'il y a une bonne raison que vous ne voulez pas trop.
L'avantage du chargement automatique réside dans le fait que les options sont mises en cache. Ainsi, lorsque Wordpress est initialisé, les options sont mises en cache et donc plus efficaces. Mais comme je l'ai dit, si vous disposez de 80 options distinctes, les performances seront réduites jusqu'à ce qu'elles soient mises en cache, ce qui est une mauvaise chose.
Voici un exemple de sérialisation de plusieurs options dans celle-ci:
$myoptions = array(
'option1' => 'option value',
'option2' => 'option value 2',
'option3' => 'option value 3'
);
update_option('theme_settings_field', $myoptions );
$options = get_option('theme_settings_field');
if ($options) {
$option1 = $options['option1'];
}
Comme vous pouvez le voir dans l'exemple, vous pouvez sérialiser un tableau qui, du point de vue de la base de données, est une option composée de nombreuses options. Lorsque vous récupérez les options, elles ne sont pas sérialisées dans un tableau auquel vous pouvez accéder (comme dans l'exemple ci-dessus).
Par défaut, les options sont chargées automatiquement et vous devez faire quelques efforts pour empêcher cela. Si vous créez une option à l'aide de l'API update_option
, elle est créée en tant que chargement automatique. Pour avoir une option de non-chargement automatique, vous devez la créer en appelant add_option avec le quatrième paramètre réglé sur "non". En raison de la différence de facilité d'utilisation des API, je suppose que la plupart des options sont chargées automatiquement.
Avant de suivre cette voie, vous devriez également considérer ce ticket dans lequel il est prétendu que wordpress.com charge simplement toutes les options.