我有10个元框设置。用户可以将图像上传到每个元数据盒,它将在前端显示为缩略图。我有它的工作,但我的代码需要简化。我遇到的问题是如何遍历每个元框ID。我会尝试进一步解释:
我的元框设置如下:
'fields' => array(
array(
'name' => 'Image 1',
'desc' => 'Upload an image',
'id' => $prefix . 'image1',
'type' => 'file',
'save_id' => true, // save ID using true
'allow' => array( 'url', 'attachment' ) // limit to just attachments with array( 'attachment' )
),
array(
'name' => 'Image 2',
'desc' => 'Upload an image',
'id' => $prefix . 'image2',
'type' => 'file',
'save_id' => true, // save ID using true
'allow' => array( 'url', 'attachment' ) // limit to just attachments with array( 'attachment' )
),
array(
'name' => 'Image 3',
'desc' => 'Upload an image',
'id' => $prefix . 'image3',
'type' => 'file',
'save_id' => true, // save ID using true
'allow' => array( 'url', 'attachment' ) // limit to just attachments with array( 'attachment' )
),
我使用get_post_meta这样工作:
<?php $attachment_id = get_post_meta( get_the_ID(), 'image1_id', true ); ?>
<?php if ( ! empty( $attachment_id ) ) : ?>
<div class="container"><div class="row">
<ul class="image-thumbs">
<li class="thumbs"><?php echo wp_get_attachment_image( $attachment_id, 'my-thumb-size' ); ?></li>
<?php endif; ?>
<?php $attachment_id = get_post_meta( get_the_ID(), 'image2_id', true ); ?>
<?php if ( ! empty( $attachment_id ) ) : ?>
<li class="thumbs"><?php echo wp_get_attachment_image( $attachment_id, 'my-thumb-size' ); ?></li>
<?php endif; ?>
<?php $attachment_id = get_post_meta( get_the_ID(), 'image3_id', true ); ?>
<?php if ( ! empty( $attachment_id ) ) : ?>
<li class="thumbs"><?php echo wp_get_attachment_image( $attachment_id, 'my-thumb-size' ); ?></li>
<?php endif; ?>
<?php $attachment_id = get_post_meta( get_the_ID(), 'image4_id', true ); ?>
<?php if ( ! empty( $attachment_id ) ) : ?>
<li class="thumbs"><?php echo wp_get_attachment_image( $attachment_id, 'my-thumb-size' ); ?></li>
<?php endif; ?>
但我正在努力弄清楚如何简化这一点。这似乎是很多代码的方式,我确信有一种更有效的方法。这是简化的尝试,但我一次只能获得一个id:
<!-- Look to see if there's an image uploaded and then output as a thumbnail-->
<?php $attachment_id = get_post_meta( get_the_ID(), 'image1_id' ); ?>
<?php if ( ! empty( $attachment_id ) ) : ?>
<div class="container">
<div class="row">
<ul class="image-thumbs">
<?php foreach( $attachment_id as $thumb ) {
echo '<li class="thumbs">';
echo wp_get_attachment_image( $thumb, 'my-thumb-size' );
echo '</li>';
} ?>
</ul>
</div>
</div>
<?php endif; ?>
所以我的问题是:如何为每个元数据块获取多个ID?目前我只能获得1,例如“image1_id”。如何获取image1_id,image2_id,image3_id等并显示为列表项?
答案 0 :(得分:1)
有一个函数可以输出多维数组中帖子的所有元数据。 http://codex.wordpress.org/Function_Reference/get_post_custom
使用该功能,您应该能够遍历数据,就像您希望减少代码冗余一样。
这是我刚写的一个示例函数。我创建了四个附加到帖子的元框,然后使用它来输出它们。它使用strpos过滤掉我想要的元字段。
function my_get_meta_data() {
global $post;
$custom_fields = get_post_custom( $post->ID );
foreach ( $custom_fields as $key => $fields ) {
// _test_ is the $prefix for these metaboxes
if ( strpos( $key, '_test_' ) !== false ) {
if ( isset( $fields[0] ) ) {
// THIS IS WHERE YOU WOULD SETUP YOUR OUTPUT
echo $fields[0] . '<br />';
}
}
} // end foreach
// Dump your metaboxes to see whats there
// echo '<pre>';
// var_dump($custom_fields);
// echo '</pre>';
}