Aby odpowiedzieć na to pytanie, poszedłem i przeprowadziłem kilka testów, a wyniki były naprawdę oszałamiające.
Oto mój test
Aby to zrobić, skonfiguruj się ze stroną testową. Wystarczy skopiować page.php, zmienić jego nazwę i usunąć pętlę. Teraz po prostu utwórz nową stronę w zapleczu. Zanim zaczniesz, najpierw przetestuj licznik czasu z pustymi informacjami, aby uzyskać liczbę zapytań bez żadnych danych
Utworzyłem łącznie 5 pól meta dla stanowiska testowego,
enclosure
,
First name
,
Last name
,
packages
i
post_views_count
Mój post testowy miał identyfikator 530
. Wewnątrz posta możesz po prostu użyć $post->ID
lub get_the_ID()
ustawić identyfikator posta
Mój pierwszy test był następujący:
<?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>
co dało mi następujące wyniki
1 zapytań w 0,00195 sekund.
Mój drugi test był następujący:
<?php
timer_start();
$a = get_post_meta(530);
?>
<p><?php echo get_num_queries(); ?> queries in <?php timer_stop(1, 5); ?> seconds. </p>
co zaskakująco dało ten sam wynik
1 zapytań w 0,00195 sekund.
Jeśli spojrzeć na kod źródłowy dla get_post_meta()
zobaczysz, że get_post_meta()
jest po prostu tylko dla wrapper get_metadata()
. Więc to jest to, gdzie musisz spojrzeć. Kod źródłowy dla get_metadata()
zobaczysz, że metadane uzyskać buforowane.
Więc na twoje pytanie dotyczące tego, którego użyć i na temat wydajności, odpowiedź brzmi: to zależy od ciebie. Widziałeś dowód w wynikach
Moim osobistym zdaniem, jeśli chcesz pobrać 10 pól metadanych (lub w moim przypadku 5), zastosuj drugie podejście w mojej odpowiedzi.
$a = get_post_meta(530);
Pisanie jest nie tylko szybsze, ale również nie powinieneś powtarzać kodu. Należy również zwrócić uwagę na to, że drugie podejście zawiera wszystkie pola meta w tablicy, do których można bardzo łatwo uzyskać dostęp
Na przykład, oto mój wynik z, $a
jeśli zrobięvar_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"
}
}
Możesz teraz uzyskać dostęp do dowolnych zwróconych metadanych w swoim poście w następujący sposób:
echo $a['First name'][0] . " " . $a['Last name'][0] . "<br>";
Który wyświetli się
Tom Storm