複数のget_post_meta値を返すための解決策を探しています...
現在私は次のようにメタボックス配列を使用しています。
$meta_boxes[] = array(
'id' => 'setlist',
'title' => 'Setlist Information',
'pages' => array('post'),
'fields' => array(
array(
'name' => 'Setlist 1', // field name
'desc' => 'Entry 1', // field description, optional
'id' => $prefix . 'setlist_1', // field id, i.e. the meta key
'type' => 'text', // text box
'std' => '', // default value, optional
'style' => 'width: 100px', // custom style for field, added in v3.1
),
array(
'name' => 'Setlist 2',
'desc' => 'Entry 2',
'id' => $prefix . 'setlist_2',
'type' => 'text',
'std' => '',
'style' => 'width: 100px',
),
などなど(つまりsetlist_3,4,5,6,7,8 ....)
私のsingle.phpには
<?php if ( get_post_meta( $post->ID, 'rw_setlist_1', true ) ) : echo "<li>"; echo get_post_meta( $post->ID, 'rw_setlist_1', true ); echo "</li>"; ?>
<?php endif; ?>
<?php if ( get_post_meta( $post->ID, 'rw_setlist_2', true ) ) : echo "<li>"; echo get_post_meta( $post->ID, 'rw_setlist_2', true ); echo "</li>"; ?>
<?php endif; ?>
<?php if ( get_post_meta( $post->ID, 'rw_setlist_3', true ) ) : echo "<li>"; echo get_post_meta( $post->ID, 'rw_setlist_3', true ); echo "</li>"; ?>
<?php endif; ?>
<?php if ( get_post_meta( $post->ID, 'rw_setlist_4', true ) ) : echo "<li>"; echo get_post_meta( $post->ID, 'rw_setlist_4', true ); echo "</li>"; ?>
<?php endif; ?>
<?php if ( get_post_meta( $post->ID, 'rw_setlist_5', true ) ) : echo "<li>"; echo get_post_meta( $post->ID, 'rw_setlist_5', true ); echo "</li>"; ?>
セットリストの値は2から30の範囲です。
私は頭がおかしいと思っていますが、この方法では不要で長時間のロード時間が発生するように思えますが、正しいですか?それでは、配列内のすべての値を「より簡単な方法で」チェックするための、より効率的なスクリプトの作成方法を説明します。
コードの設定方法が間違っています。カスタムフィールドごとに2つのデータベース呼び出しを行っています。このように2〜30のフィールドがある場合は、1回の呼び出しで60回以上データベースを呼び出すことができます。例: get_post_custom()
$custom_fields = get_post_custom($post->ID);
for ($i = 1; $i <= 30; $i++) {
if(isset($custom_fields["rw_setlist_$i"])){
echo "<li>";
echo $custom_fields["rw_setlist_$i"];
echo "</li>";
}
}
私はget_post_meta()
(より正確にはそれが呼び出すget_metadata()
関数)が1つの問い合わせで投稿のためのすべてのメタデータを取得し、その後の呼び出しのためにそれをキャッシュすると思います。コードの冗長性については、明示的に順序付けする必要がない場合は、それらすべてを単一のキーの下に保存して、それらを配列として取得するだけで済みます。