Щоб відповісти на це, я пішов і зробив кілька тестів на це, і результати насправді були душевними.
Ось мій тест
Для цього власноруч налаштуйте тестову сторінку. Просто скопіюйте сторінку.php, перейменуйте її та видаліть цикл. Тепер просто створіть нову сторінку в задньому кінці. Перш ніж почати, спершу протестуйте свій таймер із порожньою інформацією, щоб отримати кількість запитів без будь-яких даних
Я створив 5 метаполей для тестового поста,
enclosure
,
First name
,
Last name
,
packages
і
post_views_count
Мій тестовий пост мав ідентифікатор 530
. Всередині публікації ви можете просто використовувати $post->ID
або get_the_ID()
встановити ідентифікатор публікації
Тож мій перший тест був такий:
<?php
timer_start();
$a = get_post_meta(530, 'enclosure', true);
$b = get_post_meta(530, 'First name', true);
$c = get_post_meta(530, 'Last name', true);
$d = get_post_meta(530, 'packages', true);
$e = get_post_meta(530, 'post_views_count', true);
?>
<p><?php echo get_num_queries(); ?> queries in <?php timer_stop(1, 5); ?> seconds. </p>
що дало мені наступні результати
1 запит за 0,00195 секунд.
Мій другий тест був такий:
<?php
timer_start();
$a = get_post_meta(530);
?>
<p><?php echo get_num_queries(); ?> queries in <?php timer_stop(1, 5); ?> seconds. </p>
що, на диво, дало такий же результат
1 запит за 0,00195 секунд.
Якщо ви подивитеся на вихідний код для get_post_meta()
, ви побачите, що get_post_meta()
це просто просто обгортка get_metadata()
. Отже, це було те, що потрібно шукати. Вихідний код для get_metadata()
, ви побачите , що метадані кешуватися.
Тож на ваше запитання про те, що використовувати та про продуктивність, відповідь буде, саме вам. Ви побачили докази в результатах
На мою особисту думку, якщо вам потрібно отримати 10 полів метаданих (або в моєму випадку 5), використовуйте другий підхід у моїй відповіді.
$a = get_post_meta(530);
Писати не тільки швидше, але і не слід повторювати код. Ще один момент, який слід зазначити тут, другий підхід містить усі метаполя в масиві, до якого можна легко отримати доступ та отримати його
Як, наприклад, ось мій результат, $a
якщо я роблюvar_dump( $a );
array(9) {
["_edit_lock"]=>
array(1) {
[0]=>
string(12) "1414838328:1"
}
["_edit_last"]=>
array(1) {
[0]=>
string(1) "1"
}
["_custom_sidebar_per_page"]=>
array(1) {
[0]=>
string(7) "default"
}
["post_views_count"]=>
array(1) {
[0]=>
string(1) "0"
}
["packages"]=>
array(1) {
[0]=>
string(1) "0"
}
["repeatable_names"]=>
array(1) {
[0]=>
string(79) "a:1:{i:0;a:3:{s:4:"role";s:4:"fool";s:4:"name";s:6:"Pieter";s:3:"url";s:0:"";}}"
}
["enclosure"]=>
array(1) {
[0]=>
string(105) "http://localhost/wordpress/wp-content/uploads/2014/09/Nissan-Navara-Tough-City.avi
13218974
video/avi
"
}
["First name"]=>
array(1) {
[0]=>
string(3) "Tom"
}
["Last name"]=>
array(1) {
[0]=>
string(5) "Storm"
}
}
Тепер ви можете отримати доступ до будь-яких повернених метаданих у своїй публікації таким чином:
echo $a['First name'][0] . " " . $a['Last name'][0] . "<br>";
Яке відобразиться
Том Шторм