Setiap kunci meta pos dapat memiliki beberapa nilai. Jadi, Anda mendapatkan nilai secara default sebagai array; entri pertama ( 0
) adalah yang tertua.
get_post_custom()
mengambil semua kunci meta dengan nilainya. Anda dapat menyederhanakan kode Anda dengan:
$price = get_post_meta( $post->ID, 'price', TRUE );
$comake = get_post_meta( $post->ID, 'coMake', TRUE );
Ketika parameter terakhir get_post_meta()
adalah TRUE
, WordPress akan mengembalikan nilai tunggal: entri pertama dalam nilai meta pos untuk kunci yang diberikan.
Panggilan pertama ke get_post_meta()
akan mengambil dan cache semua nilai meta untuk ID posting di latar belakang, jadi panggilan kemudian tidak akan menghasilkan permintaan basis data tambahan.
Sebuah contoh
Katakanlah, kami membuat kunci meta pos bernama color
dan mengisinya dengan tiga nilai berbeda untuk satu pos. Kemudian kita melakukan hal yang sama dengan kunci 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 );
});
Parameter terakhir FALSE
memberitahu WordPress untuk tidak membuat kunci meta ini unik - tetapi untuk memungkinkan beberapa nilai untuk satu kunci saja.
Struktur yang dihasilkan di postmeta
tabel kami akan terlihat seperti ini:
Setiap baris memiliki yang unik meta_id
, tetapi masing post_id
- masing dapat memiliki banyak meta_key
s, dan masing-masing meta_key
dapat memiliki banyak meta_value
s.
Sekarang mari kita ambil semua nilai khusus untuk posting 561:
add_action( 'shutdown', function(){
$custom = get_post_custom( 561 );
print '<pre>' . esc_html( var_export( $custom, TRUE ) ) . '</pre>';
});
Hasil:
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
dan _edit_lock
internal WordPress, kami mengabaikannya untuk saat ini. Perhatikan saja, kami juga mendapatkan nilai-nilai ini sebagai array, meskipun hanya ada satu nilai.
color
dan age
array seperti semua nilai meta pos.
$custom['color'][0]
adalah blue
.
Sekarang kita ambil hanya warnanya dengan get_post_meta()
:
add_action( 'shutdown', function(){
$color = get_post_meta( 561, 'color' );
print '<pre>' . esc_html( var_export( $color, TRUE ) ) . '</pre>';
});
Hasil:
array (
0 => 'blue',
1 => 'red',
2 => 'yellow',
)
Kami hanya mendapatkan satu bagian dari nilai meta kami di sini. $color[0]
masih blue
. Di belakang layar, WordPress telah mengambil semua nilai khusus, jadi klik berikutnya untuk age
dilayani dari cache.
Dari segi kinerja get_post_custom()
dan get_post_meta()
sama.
Upaya terakhir: Dapatkan warna dengan get_post_meta()
sebagai nilai tunggal.
add_action( 'shutdown', function(){
$color = get_post_meta( 561, 'color', TRUE );
print '<pre>' . esc_html( var_export( $color, TRUE ) ) . '</pre>';
});
Hasil: blue
.
WordPress telah melakukan apa yang telah Anda lakukan dalam kode Anda: Ia telah mengambil kunci array 0
dan mengembalikan nilainya sebagai string.
Ini adalah opsi yang paling mudah dibaca, gunakan untuk menulis kode yang mudah dimengerti.