Para responder a esto, he ido y hecho algunas pruebas al respecto, y los resultados fueron realmente alucinantes.
Aquí está mi prueba
Para esto, configúrese con una página de prueba. Simplemente copie page.php, renómbrelo y elimine el bucle. Ahora solo crea una nueva página en el back-end. Antes de comenzar, primero pruebe su temporizador con información vacía para obtener la cantidad de consultas sin datos
He creado 5 campos de metadatos en total para una publicación de prueba,
-
enclosure
,
-
First name
,
-
Last name
,
-
packages
y
-
post_views_count
Mi publicación de prueba tenía un ID de 530
. Dentro de una publicación, simplemente puedes usar $post->ID
o get_the_ID()
para establecer la ID de la publicación
Así que mi primera prueba fue la siguiente:
<?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>
que me dio los siguientes resultados
1 consultas en 0.00195 segundos.
Mi segunda prueba fue la siguiente:
<?php
timer_start();
$a = get_post_meta(530);
?>
<p><?php echo get_num_queries(); ?> queries in <?php timer_stop(1, 5); ?> seconds. </p>
que, sorprendentemente, dio el mismo resultado
1 consultas en 0.00195 segundos.
Si observa el código fuente para get_post_meta()
, verá que get_post_meta()
es simplemente un contenedor para get_metadata()
. Así que esto es donde necesitas mirar. El código fuente para get_metadata()
, verá que los metadatos se almacenan en caché.
Entonces, en su pregunta sobre cuál usar y sobre el rendimiento, la respuesta será, depende de usted. Has visto la prueba en los resultados
En mi opinión personal, si necesita recuperar 10 campos de metadatos (o en mi caso 5), use el segundo enfoque en mi respuesta.
$a = get_post_meta(530);
No solo es más rápido de escribir, sino que tampoco debes repetir el código. Otro punto a tener en cuenta aquí, el segundo enfoque contiene todos los metacampos en una matriz a la que se puede acceder y recuperar muy fácilmente
Como ejemplo, aquí está mi salida de $a
si hago un 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"
}
}
Ahora puede acceder a cualquiera de los metadatos devueltos en su publicación de la siguiente manera:
echo $a['First name'][0] . " " . $a['Last name'][0] . "<br>";
Que se mostrará
Tom Storm