Para responder a esto, fui y realicé algunas pruebas al respecto, y los resultados fueron realmente alucinantes.
Aqui esta mi prueba
Para esto, prepárese con una página de prueba. Simplemente copie page.php, cámbiele el nombre 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 ningún dato
He creado 5 metacampos 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 una identificación de 530
. Dentro de una publicación, simplemente puede usar $post->ID
o get_the_ID()
configurar la ID de la publicación
Entonces 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>
lo 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 nos fijamos en el código fuente para get_post_meta()
, verá que get_post_meta()
es simplemente un contenedor para get_metadata()
. Así que aquí es donde debes mirar. El código fuente de 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 escribir, sino que tampoco debe 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 fácilmente
Solo como ejemplo, aquí está mi salida de $a
si hago unvar_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 mostrará
Tom Storm