これに答えるために、私はこれに行っていくつかのテストを行いましたが、結果は実際に驚くべきものでした。
これが私のテストです
これを行うには、テストページを設定します。単にpage.phpをコピーし、名前を変更してループを削除するだけです。次に、バックエンドで新しいページを作成します。開始する前に、まず空の情報でタイマーをテストして、データのないクエリの量を取得します
テストポスト用に5つのメタフィールドを作成しました。
enclosure
、
First name
、
Last name
、
packages
そして
post_views_count
テスト投稿のIDはでした530
。投稿内では、$post->ID
またはget_the_ID()
を使用して、投稿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>
次の結果が得られました
0.00195秒で1クエリ。
私の2番目のテストは次のとおりです。
<?php
timer_start();
$a = get_post_meta(530);
?>
<p><?php echo get_num_queries(); ?> queries in <?php timer_stop(1, 5); ?> seconds. </p>
意外にも同じ結果が得られました
0.00195秒で1クエリ。
のソースコードをget_post_meta()
見ると、それget_post_meta()
は単にのラッパーにすぎないことがわかりますget_metadata()
。だから、これはあなたが見る必要があったのです。のソースコードをget_metadata()
見ると、メタデータがキャッシュされていることがわかります。
どちらを使用するか、そしてパフォーマンスについてのあなたの質問では、答えはあなた次第です。あなたは結果の証拠を見てきました
私の個人的な意見では、10個のメタデータフィールド(または私の場合は5個)を取得する必要がある場合は、2番目の方法を使用します。
$a = get_post_meta(530);
書くのが速いだけでなく、コードを繰り返さないでください。ここでもう1つ注意すべき点として、2番目のアプローチは、すべてのメタフィールドを配列に保持し、非常に簡単にアクセスおよび取得できる
ちょうど例の問題として、$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>";
どちらが表示されます
トムストーム