Her bir meta meta anahtarının birden fazla değeri olabilir. Böylece değerleri varsayılan olarak dizi olarak alırsınız; ilk giriş ( 0
) en eskidir.
get_post_custom()
tüm meta anahtarları değerleriyle alır. Kodunuzu aşağıdakilerle basitleştirebilirsiniz:
$price = get_post_meta( $post->ID, 'price', TRUE );
$comake = get_post_meta( $post->ID, 'coMake', TRUE );
İçin son parametre get_post_meta()
olduğunda TRUE
, WordPress tek bir değer döndürür: verilen anahtar için meta sonrası değerindeki ilk girdi.
İlk çağrı, bu posta kimliği için tüm meta değerleri arka planda alır get_post_meta()
ve önbelleğe alır , böylece daha sonraki çağrılar ek veritabanı sorgularına neden olmaz.
Bir örnek
Diyelim diyelim biz adında bir post meta anahtarı oluşturmak color
ve üç farklı değerlerle doldurun bir yazı. Sonra aynısını bir anahtarla yaparız 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 );
});
Son parametre FALSE
WordPress'e bu meta anahtarı benzersiz yapmamasını değil , bunun yerine bir anahtar için birden çok değere izin vermesini söyler .
Tablomuzda ortaya çıkan yapı postmeta
şöyle görünecektir:
Her satır benzersizdir meta_id
, ancak her birinin post_id
birden fazla meta_key
s değeri meta_key
olabilir ve her birinin birden çok meta_value
s değeri olabilir.
Şimdi 561 sonrası için tüm özel değerleri getirelim:
add_action( 'shutdown', function(){
$custom = get_post_custom( 561 );
print '<pre>' . esc_html( var_export( $custom, TRUE ) ) . '</pre>';
});
Sonuç:
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
ve _edit_lock
WordPress'in içselleriyiz, şimdilik bunu görmezden geliyoruz. Sadece bir değer olmasına rağmen bu değerleri de bir dizi alırız.
color
ve age
tüm post meta değerleri gibi dizilerdir.
$custom['color'][0]
olduğunu blue
.
Şimdi sadece rengi alıyoruz get_post_meta()
:
add_action( 'shutdown', function(){
$color = get_post_meta( 561, 'color' );
print '<pre>' . esc_html( var_export( $color, TRUE ) ) . '</pre>';
});
Sonuç:
array (
0 => 'blue',
1 => 'red',
2 => 'yellow',
)
Burada meta değerlerimizin sadece bir parçasını alıyoruz. $color[0]
hala blue
. Sahne arkasında, WordPress zaten tüm özel değerleri getirmiştir , bu nedenle age
önbellekten bir sonraki isabet sunulacaktır.
Performans açısından get_post_custom()
ve get_post_meta()
eşittir.
Son deneme: Rengi get_post_meta()
tek bir değer olarak elde edin.
add_action( 'shutdown', function(){
$color = get_post_meta( 561, 'color', TRUE );
print '<pre>' . esc_html( var_export( $color, TRUE ) ) . '</pre>';
});
Sonuç: blue
.
WordPress kodunuzda yaptıklarınızı yaptı: Dizi anahtarını aldı 0
ve değeri bir dize olarak döndürdü.
Bu en okunabilir seçenektir, anlaşılması kolay kod yazmak için kullanın.