เพื่อตอบคำถามนี้ฉันได้ไปและทำการทดสอบเกี่ยวกับเรื่องนี้แล้วและผลลัพธ์ก็ออกมาอย่างน่าเหลือเชื่อ
นี่คือการทดสอบของฉัน
ด้วยตัวคุณเองตั้งค่าตัวเองด้วยหน้าทดสอบ เพียงแค่คัดลอก page.php เปลี่ยนชื่อแล้วลบลูป ตอนนี้เพียงแค่สร้างหน้าใหม่ในส่วนหลัง ก่อนที่คุณจะเริ่มให้ทดสอบตัวจับเวลาด้วยข้อมูลว่างเปล่าก่อนเพื่อรับจำนวนข้อความค้นหาที่ไม่มีข้อมูลใด ๆ
ฉันสร้างเมตาทั้งหมด 5 ฟิลด์สำหรับการทดสอบโพสต์
enclosure
,
First name
,
Last name
,
packages
และ
post_views_count
โพสต์การทดสอบของฉันมี ID 530
ของ ภายในโพสต์คุณสามารถใช้$post->ID
หรือget_the_ID()
ตั้งรหัสโพสต์ได้
ดังนั้นการทดสอบครั้งแรกของฉันเป็นดังนี้:
<?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>
ซึ่งให้ผลลัพธ์ต่อไปนี้แก่ฉัน
1 ข้อความค้นหาใน 0.00195 วินาที
การทดสอบครั้งที่สองของฉันเป็นดังนี้:
<?php
timer_start();
$a = get_post_meta(530);
?>
<p><?php echo get_num_queries(); ?> queries in <?php timer_stop(1, 5); ?> seconds. </p>
ซึ่งน่าแปลกใจที่ให้ผลลัพธ์เดียวกัน
1 ข้อความค้นหาใน 0.00195 วินาที
ถ้าคุณดูที่รหัสที่มาสำหรับget_post_meta()
คุณจะเห็นว่าเป็นเพียงแค่กระดาษห่อสำหรับget_post_meta()
get_metadata()
ดังนั้นนี่คือคุณต้องดู รหัสที่มาสำหรับget_metadata()
คุณจะเห็นว่าเมตาดาต้าได้รับการเก็บไว้ชั่วคราว
ดังนั้นสำหรับคำถามของคุณเกี่ยวกับการใช้และประสิทธิภาพคำตอบนั้นขึ้นอยู่กับคุณ คุณได้เห็นหลักฐานในผลลัพธ์
ในความเห็นส่วนตัวของฉันหากคุณต้องการดึง 10 เขตข้อมูล meta (หรือในกรณีของฉัน 5) ใช้วิธีที่สองในคำตอบของฉัน
$a = get_post_meta(530);
ไม่เพียง แต่เขียนได้เร็วเท่านั้น แต่คุณไม่ควรทำซ้ำรหัสอีกด้วย อีกประเด็นที่ควรทราบที่นี่คือแนวทางที่สองจะเก็บเขตข้อมูลเมตาทั้งหมดในอาร์เรย์ซึ่งสามารถเข้าถึงและเรียกใช้ได้อย่างง่ายดาย
เช่นเดียวกับตัวอย่างนี่คือผลลัพธ์ของฉันจาก$a
ถ้าฉันทำ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"
}
}
ขณะนี้คุณสามารถเข้าถึงข้อมูลเมตาที่ส่งคืนใด ๆ ในโพสต์ของคุณดังนี้:
echo $a['First name'][0] . " " . $a['Last name'][0] . "<br>";
ซึ่งจะแสดงผล
ทอมสตอร์ม