แต่ละคีย์เมตาโพสต์สามารถมีได้หลายค่า ดังนั้นคุณจะได้รับค่าเริ่มต้นเป็นอาร์เรย์ รายการแรก ( 0) เป็นรายการที่เก่าที่สุด
get_post_custom()ดึงเมตาคีย์ทั้งหมดด้วยค่าของมัน คุณสามารถทำให้รหัสของคุณง่ายขึ้นด้วย:
$price = get_post_meta( $post->ID, 'price', TRUE );
$comake = get_post_meta( $post->ID, 'coMake', TRUE );
เมื่อพารามิเตอร์สุดท้ายget_post_meta()คือTRUEWordPress จะส่งคืนค่าเดียวนั่นคือรายการแรกในค่าโพสต์เมตาสำหรับคีย์ที่กำหนด
การเรียกครั้งแรกไปยังget_post_meta()จะดึงและเก็บค่าเมตาทั้งหมดของรหัสโพสต์นั้นในพื้นหลังดังนั้นการโทรในภายหลังจะไม่ส่งผลให้มีการสืบค้นฐานข้อมูลเพิ่มเติม
ตัวอย่าง
สมมติว่าเราสร้างคีย์โพสต์เมตาชื่อcolorแล้วเติมด้วยค่าที่แตกต่างกันสามค่าสำหรับหนึ่งโพสต์ ageจากนั้นเราก็ทำเช่นเดียวกันกับคีย์
add_action( 'wp_loaded', function() {
foreach ( array ( 'blue', 'red', 'yellow' ) as $color )
add_post_meta( 561, 'color', $color, FALSE );
foreach ( array ( '14', '40', '104' ) as $age )
add_post_meta( 561, 'age', $age, FALSE );
});
พารามิเตอร์สุดท้ายFALSEบอกให้ WordPress ไม่ทำให้คีย์เมตานี้ไม่ซ้ำกันแต่เพื่ออนุญาตให้มีหลายค่าสำหรับหนึ่งคีย์แทน
โครงสร้างผลลัพธ์ในpostmetaตารางของเราจะมีลักษณะดังนี้:

แต่ละแถวมีเอกลักษณ์meta_idแต่แต่ละแถวpost_idสามารถมีหลายmeta_keys และแต่ละแถวmeta_keyสามารถมีหลายmeta_values
ตอนนี้เรามาดึงค่าที่กำหนดเองทั้งหมดสำหรับโพสต์ 561:
add_action( 'shutdown', function(){
$custom = get_post_custom( 561 );
print '<pre>' . esc_html( var_export( $custom, TRUE ) ) . '</pre>';
});
ผลลัพธ์:
array (
'_edit_last' =>
array (
0 => '1',
),
'_edit_lock' =>
array (
0 => '1367617428:1',
),
'color' =>
array (
0 => 'blue',
1 => 'red',
2 => 'yellow',
),
'age' =>
array (
0 => '14',
1 => '40',
2 => '104',
),
)
_edit_lastและ_edit_lockเป็น WordPress ภายในเราไม่สนใจเลยสักครู่ เพิ่งทราบเราได้รับค่าเหล่านี้อาร์เรย์เช่นกันแม้ว่าจะมีเพียงหนึ่งค่า
colorและageเป็นอาร์เรย์เหมือนค่าโพสต์เมตาทั้งหมด เป็น
$custom['color'][0]blue
ตอนนี้เราดึงสีด้วยget_post_meta():
add_action( 'shutdown', function(){
$color = get_post_meta( 561, 'color' );
print '<pre>' . esc_html( var_export( $color, TRUE ) ) . '</pre>';
});
ผลลัพธ์:
array (
0 => 'blue',
1 => 'red',
2 => 'yellow',
)
เราได้รับค่าเมตาเพียงชิ้นเดียวของเราที่นี่ ยังคงเป็น$color[0] blueเบื้องหลัง WordPress ได้ดึงค่าที่กำหนดเองทั้งหมดแล้วดังนั้นการเข้าชมครั้งต่อไปageจะถูกนำเสนอจากแคช
ในเรื่องของประสิทธิภาพget_post_custom()และget_post_meta()ความเท่าเทียม
ความพยายามครั้งสุดท้าย: รับสีโดยget_post_meta()มีค่าเดียว
add_action( 'shutdown', function(){
$color = get_post_meta( 561, 'color', TRUE );
print '<pre>' . esc_html( var_export( $color, TRUE ) ) . '</pre>';
});
blueส่งผลให้เกิด:
WordPress ได้ทำสิ่งที่คุณทำในรหัสของคุณ: มันได้รับคีย์อาร์เรย์0และส่งกลับค่าเป็นสตริง
นี่เป็นตัวเลือกที่อ่านง่ายที่สุดใช้เพื่อเขียนรหัสที่เข้าใจง่าย