在Post Content中显示同名的多个自定义字段

时间:2014-06-20 01:36:35

标签: php wordpress post custom-fields

因此,使用来自客户现有网站的大量导入内容的新Wordpress主题,并且在他们的旧主题中,他们将多个图像附加到他们各自的投资组合页面。

这些图片共享相同的自定义字段名称:project_photo_photo

我遇到的问题是,在新主题中,我如何挽救导入的数据并利用现有的自定义字段名称,并为后期循环模板中的每个帖子显示多个项目图像?

下面的代码示例显示了我尝试显示此内容的时间,它只显示一个图像结果,添加相同代码块的倍数只会导致显示第一个图像的副本:

<?php if ( get_post_meta( get_the_ID(), 'project_photo_photo' ) ) : ?>
            <div class="grid_gallery clearfix">
                <div class="grid_gallery_inner">
                    <figure class="gallery_item featured-thumbnail thumbnail single-gallery-item">
                        <a href="/wp-content/files_mf/<?php echo get_post_meta( get_the_ID(), 'project_photo_photo', true ); ?>" class="image-wrap" rel="prettyPhoto[gallery]">
                            <img class="project_photo_photo" width="260" src="/wp-content/files_mf/<?php echo get_post_meta( get_the_ID(), 'project_photo_photo', true ); ?>" alt="<?php the_title(); ?>" />
                        <span class="zoom-icon"></span>
                        </a>
                    </figure>
                </div>
                <!--END .slider -->
            </div>
        <?php endif; ?>

我觉得我很接近,必须有一种优雅地做到这一点的方法。如果有人能帮助我,我会非常感激。

1 个答案:

答案 0 :(得分:2)

如果同一自定义字段有多个条目,则在尝试

时会得到一个数组

get_post_meta( get_the_ID(), 'project_photo_photo' )

但如果您使用true作为

的最后一个参数,则只获得第一个值

get_post_meta( get_the_ID(), 'project_photo_photo', true )

您可以在此处获取更多信息:http://codex.wordpress.org/Function_Reference/get_post_meta

这就是你每次都获得单一结果的原因。

此外,您应该只查询一次meta字段。你已经查询了3次,这会花费数据库操作和时间。调用一次,保存在变量中并根据需要使用。

您将获得照片的一系列值。你需要循环才能得到它们。

我修改了您的代码,我希望我已将forloop放置在适当的位置,如果没有,请放置在适当的位置。

<?php  $project_photos = get_post_meta( get_the_ID(), 'project_photo_photo' );
    if ( $project_photos ) : ?>
            <div class="grid_gallery clearfix">
                <?php foreach( $project_photos as $project_photo ) { ?>
                <div class="grid_gallery_inner">
                    <figure class="gallery_item featured-thumbnail thumbnail single-gallery-item">
                        <a href="/wp-content/files_mf/<?php echo $project_photo; ?>" class="image-wrap" rel="prettyPhoto[gallery]">
                            <img class="project_photo_photo" width="260" src="/wp-content/files_mf/<?php echo $project_photo; ?>" alt="<?php the_title(); ?>" />
                        <span class="zoom-icon"></span>
                        </a>
                    </figure>
                </div>
                <?php } ?>
                <!--END .slider -->
            </div>
    <?php endif; ?>