Każdy klucz meta post może mieć wiele wartości. Otrzymujesz więc wartości domyślnie jako tablicę; pierwszy wpis ( 0) jest najstarszy.
get_post_custom()pobiera wszystkie meta-klucze z ich wartościami. Możesz uprościć swój kod dzięki:
$price = get_post_meta( $post->ID, 'price', TRUE );
$comake = get_post_meta( $post->ID, 'coMake', TRUE );
Gdy ostatnim parametrem get_post_meta()jest TRUE, WordPress zwróci jedną wartość: pierwszy wpis w meta wartości post dla danego klucza.
Pierwsze wywołanie get_post_meta()spowoduje pobranie i buforowanie wszystkich meta wartości dla tego identyfikatora postu w tle, więc późniejsze wywołania nie spowodują dodatkowych zapytań do bazy danych.
Przykład
Załóżmy, że tworzymy meta klucz o nazwie o nazwie colori wypełniamy go trzema różnymi wartościami dla jednego postu. Następnie robimy to samo z kluczem 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 );
});
Ostatni parametr FALSEmówi WordPress nie zrobić tego klawisza meta wyjątkowy - ale aby umożliwić wielu wartości dla jednego klucza zamiast.
Wynikowa struktura w naszej postmetatabeli będzie wyglądać następująco:

Każdy wiersz ma unikalny meta_id, ale każdy post_idmoże mieć wiele meta_keys, a każdy meta_keymoże mieć wiele meta_values.
Teraz pobierzmy wszystkie wartości niestandardowe dla posta 561:
add_action( 'shutdown', function(){
$custom = get_post_custom( 561 );
print '<pre>' . esc_html( var_export( $custom, TRUE ) ) . '</pre>';
});
Wynik:
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_lasti _edit_locksą wewnętrznymi elementami WordPress, na razie to ignorujemy. Pamiętaj, że otrzymujemy te wartości i tablicę, chociaż jest tylko jedna wartość.
colori agesą tablicami, jak wszystkie wartości po meta.
$custom['color'][0]jest blue.
Teraz pobieramy tylko kolor za pomocą get_post_meta():
add_action( 'shutdown', function(){
$color = get_post_meta( 561, 'color' );
print '<pre>' . esc_html( var_export( $color, TRUE ) ) . '</pre>';
});
Wynik:
array (
0 => 'blue',
1 => 'red',
2 => 'yellow',
)
Otrzymujemy tutaj tylko jeden kawałek naszych meta wartości. $color[0]jest nadal blue. Za kulisami WordPress już pobrał wszystkie niestandardowe wartości, więc kolejne trafienie agezostanie podane z pamięci podręcznej.
Pod względem wydajności get_post_custom()i get_post_meta()są równe.
Ostatnia próba: uzyskaj kolor get_post_meta()jako pojedynczą wartość.
add_action( 'shutdown', function(){
$color = get_post_meta( 561, 'color', TRUE );
print '<pre>' . esc_html( var_export( $color, TRUE ) ) . '</pre>';
});
Rezultat: blue.
WordPress zrobił to, co zrobiłeś w kodzie: wziął klucz tablicy 0i zwrócił wartość jako ciąg.
Jest to najbardziej czytelna opcja, użyj jej do napisania kodu, który jest łatwy do zrozumienia.