Para responder a isso, fiz alguns testes e os resultados foram realmente impressionantes.
Aqui está o meu teste
Para isso, configure-se com uma página de teste. Basta copiar o page.php, renomeá-lo e excluir o loop. Agora, basta criar uma nova página no back-end. Antes de começar, primeiro teste seu cronômetro com informações vazias para obter a quantidade de consultas sem dados
Eu criei 5 campos meta para um post de teste,
enclosure
,
First name
,
Last name
,
packages
e
post_views_count
Meu post de teste tinha um ID de 530
. Dentro de uma postagem, você pode simplesmente usar $post->ID
ou get_the_ID()
definir o ID da postagem
Então, meu primeiro teste foi o seguinte:
<?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>
o que me deu os seguintes resultados
1 consultas em 0,00195 segundos.
Meu segundo teste foi o seguinte:
<?php
timer_start();
$a = get_post_meta(530);
?>
<p><?php echo get_num_queries(); ?> queries in <?php timer_stop(1, 5); ?> seconds. </p>
que, surpreendentemente, deu o mesmo resultado
1 consultas em 0,00195 segundos.
Se você olhar para o código-fonte para get_post_meta()
, você verá que get_post_meta()
é simplesmente um invólucro para get_metadata()
. Então é isso que você precisa olhar. O código-fonte para get_metadata()
, você verá que os metadados são armazenados em cache.
Portanto, em sua pergunta sobre qual usar e sobre o desempenho, a resposta será: depende de você. Você viu a prova nos resultados
Na minha opinião pessoal, se você precisar recuperar 10 campos de metadados (ou no meu caso 5), use a segunda abordagem na minha resposta.
$a = get_post_meta(530);
Não é apenas mais rápido escrever, mas você também não deve repetir o código. Outro ponto a ser observado aqui, a segunda abordagem contém todos os meta-campos em uma matriz que pode ser acessada e recuperada com muita facilidade
Como exemplo, aqui está minha saída $a
se eu fizer umavar_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"
}
}
Agora você pode acessar qualquer um dos metadados retornados em sua postagem da seguinte maneira:
echo $a['First name'][0] . " " . $a['Last name'][0] . "<br>";
Qual exibirá
Tom Storm