Um dies zu beantworten, habe ich einige Tests durchgeführt, und die Ergebnisse waren wirklich umwerfend.
Hier ist mein Test
Richten Sie sich dazu selbst eine Testseite ein. Kopieren Sie einfach page.php, benennen Sie es um und löschen Sie die Schleife. Erstellen Sie jetzt einfach eine neue Seite im Backend. Bevor Sie beginnen, testen Sie zuerst Ihren Timer mit leeren Informationen, um die Anzahl der Abfragen ohne Daten zu erhalten
Ich habe insgesamt 5 Metafelder für einen Testbeitrag erstellt.
enclosure
,
First name
,
Last name
,
packages
und
post_views_count
Mein Testpost hatte einen Ausweis von 530
. Innerhalb eines Posts können Sie einfach die Post-ID verwenden $post->ID
oder get_the_ID()
festlegen
Mein erster Test war also wie folgt:
<?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>
das gab mir die folgenden Ergebnisse
1 Abfragen in 0,00195 Sekunden.
Mein zweiter Test war wie folgt:
<?php
timer_start();
$a = get_post_meta(530);
?>
<p><?php echo get_num_queries(); ?> queries in <?php timer_stop(1, 5); ?> seconds. </p>
was überraschenderweise das gleiche Ergebnis ergab
1 Abfragen in 0,00195 Sekunden.
Wenn man sich die aussehen Quellcode für get_post_meta()
, sehen Sie , dass get_post_meta()
ist einfach nur ein Wrapper für get_metadata()
. Hier müssen Sie also suchen. Im Quellcode für sehen get_metadata()
Sie, dass die Metadaten zwischengespeichert werden.
Die Antwort auf Ihre Frage zur Verwendung und zur Leistung liegt also bei Ihnen. Sie haben den Beweis in den Ergebnissen gesehen
Wenn Sie meiner persönlichen Meinung nach 10 Metadatenfelder abrufen müssen (oder in meinem Fall 5), verwenden Sie in meiner Antwort den zweiten Ansatz.
$a = get_post_meta(530);
Es ist nicht nur schneller zu schreiben, sondern Sie sollten auch keinen Code wiederholen. Ein weiterer Punkt, den Sie hier beachten sollten: Der zweite Ansatz enthält alle Metafelder in einem Array, auf das sehr einfach zugegriffen und abgerufen werden kann
Nur als Beispiel, hier ist meine Ausgabe von, $a
wenn ich a machevar_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"
}
}
Sie können jetzt wie folgt auf alle zurückgegebenen Metadaten in Ihrem Beitrag zugreifen:
echo $a['First name'][0] . " " . $a['Last name'][0] . "<br>";
Welches wird angezeigt
Tom Storm