Кожен мета-ключ повідомлення може мати кілька значень. Таким чином, ви отримуєте значення за замовчуванням як масив; перший запис ( 0) - найдавніший.
get_post_custom()отримує всі мета-клавіші зі своїми значеннями. Ви можете спростити свій код за допомогою:
$price = get_post_meta( $post->ID, 'price', TRUE );
$comake = get_post_meta( $post->ID, 'coMake', TRUE );
Коли останній параметр для get_post_meta()є TRUE, WordPress поверне одне значення: перший запис мета-значення пост для даного ключа.
Перший виклик до 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і повернув значення у вигляді рядка.
Це найбільш читаний варіант, використовуйте його для написання коду, який легко зрозуміти.