Untuk menjawab ini, saya telah pergi dan melakukan beberapa tes tentang ini, dan hasilnya benar-benar mengejutkan.
Ini tes saya
Untuk ini sendiri, siapkan diri Anda dengan halaman uji. Cukup salin page.php, ganti nama dan hapus loop. Sekarang cukup buat halaman baru di bagian belakang. Sebelum Anda mulai, uji dulu timer Anda dengan info kosong untuk mendapatkan jumlah pertanyaan tanpa data
Saya telah membuat 5 bidang meta sekaligus untuk pos tes,
enclosure
,
First name
,
Last name
,
packages
dan
post_views_count
Pos pengujian saya memiliki ID dari 530
. Di dalam pos Anda cukup menggunakan $post->ID
atau get_the_ID()
untuk mengatur ID pos
Jadi tes pertama saya adalah sebagai berikut:
<?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>
yang memberi saya hasil berikut
1 kueri dalam 0,00195 detik.
Tes kedua saya adalah sebagai berikut:
<?php
timer_start();
$a = get_post_meta(530);
?>
<p><?php echo get_num_queries(); ?> queries in <?php timer_stop(1, 5); ?> seconds. </p>
yang, secara mengejutkan memberikan hasil yang sama
1 kueri dalam 0,00195 detik.
Jika Anda melihat kode sumber untuk get_post_meta()
, Anda akan melihat bahwa get_post_meta()
hanya hanya bungkus untuk get_metadata()
. Jadi ini yang perlu Anda perhatikan. The kode sumber untuk get_metadata()
, Anda akan melihat bahwa metadata mendapatkan cache.
Jadi pada pertanyaan Anda tentang mana yang harus digunakan dan tentang kinerja, jawabannya adalah, terserah Anda. Anda telah melihat buktinya dalam hasil
Menurut pendapat pribadi saya, jika Anda perlu mengambil 10 bidang data meta, (atau dalam kasus saya 5), gunakan pendekatan kedua dalam jawaban saya.
$a = get_post_meta(530);
Ini tidak hanya lebih cepat untuk menulis, tetapi Anda juga tidak boleh mengulangi kode. Poin lain yang perlu diperhatikan di sini, pendekatan kedua menampung semua bidang meta dalam array yang dapat dengan mudah diakses dan diambil
Seperti contohnya, ini adalah output saya $a
jika saya melakukanvar_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"
}
}
Sekarang Anda dapat mengakses data meta yang dikembalikan di pos Anda sebagai berikut:
echo $a['First name'][0] . " " . $a['Last name'][0] . "<br>";
Yang akan ditampilkan
Tom Storm