Pour répondre à cela, je suis allé faire quelques tests à ce sujet, et les résultats étaient en fait hallucinants.
Voici mon test
Pour cela vous-même, configurez-vous avec une page de test. Copiez simplement page.php, renommez-le et supprimez la boucle. Maintenant, créez simplement une nouvelle page dans le back-end. Avant de commencer, testez d'abord votre minuteur avec des informations vides pour obtenir le nombre de requêtes sans aucune donnée
J'ai créé 5 champs méta au total pour un poste de test,
enclosure
,
First name
,
Last name
,
packages
et
post_views_count
Mon poste de test avait un ID de 530
. Dans un article, vous pouvez simplement utiliser $post->ID
ou get_the_ID()
pour définir l'ID de l'article
Mon premier test a donc été le suivant:
<?php
timer_start();
$a = get_post_meta(530, 'enclosure', true);
$b = get_post_meta(530, 'First name', true);
$c = get_post_meta(530, 'Last name', true);
$d = get_post_meta(530, 'packages', true);
$e = get_post_meta(530, 'post_views_count', true);
?>
<p><?php echo get_num_queries(); ?> queries in <?php timer_stop(1, 5); ?> seconds. </p>
ce qui m'a donné les résultats suivants
1 requêtes en 0.00195 secondes.
Mon deuxième test était le suivant:
<?php
timer_start();
$a = get_post_meta(530);
?>
<p><?php echo get_num_queries(); ?> queries in <?php timer_stop(1, 5); ?> seconds. </p>
qui, étonnamment, a donné le même résultat
1 requêtes en 0.00195 secondes.
Si vous regardez le code source de get_post_meta()
, vous verrez que get_post_meta()
c'est simplement un wrapper pour get_metadata()
. C'est donc là que vous devez regarder. Le code source de get_metadata()
, vous verrez que les métadonnées sont mises en cache.
Donc, pour votre question sur l'utilisation et les performances, la réponse sera, c'est à vous de décider. Vous en avez vu la preuve dans les résultats
À mon avis, si vous avez besoin de récupérer 10 champs de métadonnées (ou dans mon cas 5), utilisez la deuxième approche dans ma réponse.
$a = get_post_meta(530);
Il est non seulement plus rapide à écrire, mais vous ne devez pas non plus répéter le code. Un autre point à noter ici, la deuxième approche contient tous les méta-champs dans un tableau qui peut être très facilement accessible et récupéré
Juste à titre d'exemple, voici ma sortie de $a
si je fais unvar_dump( $a );
array(9) {
["_edit_lock"]=>
array(1) {
[0]=>
string(12) "1414838328:1"
}
["_edit_last"]=>
array(1) {
[0]=>
string(1) "1"
}
["_custom_sidebar_per_page"]=>
array(1) {
[0]=>
string(7) "default"
}
["post_views_count"]=>
array(1) {
[0]=>
string(1) "0"
}
["packages"]=>
array(1) {
[0]=>
string(1) "0"
}
["repeatable_names"]=>
array(1) {
[0]=>
string(79) "a:1:{i:0;a:3:{s:4:"role";s:4:"fool";s:4:"name";s:6:"Pieter";s:3:"url";s:0:"";}}"
}
["enclosure"]=>
array(1) {
[0]=>
string(105) "http://localhost/wordpress/wp-content/uploads/2014/09/Nissan-Navara-Tough-City.avi
13218974
video/avi
"
}
["First name"]=>
array(1) {
[0]=>
string(3) "Tom"
}
["Last name"]=>
array(1) {
[0]=>
string(5) "Storm"
}
}
Vous pouvez maintenant accéder à n'importe laquelle des métadonnées renvoyées dans votre message comme suit:
echo $a['First name'][0] . " " . $a['Last name'][0] . "<br>";
Qui affichera
Tom Storm