相关查询在循环中显示相同图像

时间:2014-11-04 作者:AKNL

我正在使用下面的代码查询自定义字段FeaturedArtists中具有相同值的所有其他帖子。除了图像外,效果很好。所有图像都与当前帖子相同。如果我将catch\\u that\\u图像更改为\\u post\\u缩略图,也会发生同样的情况。

            <?php $FeaturedArtist = get_post_meta($post->ID, \'FeaturedArtist\', true); if($FeaturedArtist): ?>
        <?php $chapters = get_posts(\'numberposts=-1&meta_key=FeaturedArtist&orderby=date&order=ASC&meta_value=\'.$FeaturedArtist); foreach($chapters as $chapter):?>
            <div class="box more">
            <?php if($chapter->ID != $post->ID): ?>
            <a href ="<?php echo get_permalink($chapter->ID); ?>" alt="CONTEST ENTRY by <?php the_title(); ?>" title="CONTEST ENTRY by <?php the_title(); ?> ">
                <img src="<?php echo catch_that_image() ?>" width="625px" alt="<?php the_title(); ?>"/>
                <div class="articleTitle">
                    <span class="titleType">CONTEST ENTRY<br /><span class="titleArticle"><?php the_title(); ?></span></span>
                </div>
            </a>
            <?php endif; ?>                  
            </div>
        <?php endforeach; ?>
        <?php endif; ?>
有人知道如何解决这个问题吗?谢谢你帮助我!

1 个回复
最合适的回答,由SO网友:Marcos Rodrigues 整理而成

可能是因为catch_that_image() 正在接收全局$post_id 与相同the_post_thumbnail() 在代码中,可以传递当前章节的idcatch_that_image($chapter->ID)the_post_thumbnail( $chapter->ID ) 这应该可以解决您的问题,或者您可以尝试此代码,它应该可以工作。

<?php
global $post; 
$current_post = get_the_ID();

$FeaturedArtist = get_post_meta($current_post, \'FeaturedArtist\', true); 
if($FeaturedArtist):
    $chapters_args = array(
        \'posts_per_page\' => -1,
        \'meta_key\'       => \'FeaturedArtist\',
        \'meta_value\'     => $FeaturedArtist,
        \'orderby\'        => \'date\',
        \'post__not_in\'   => array( $current_post )
    ); 
    $chapters = get_posts( $chapters_args ); 

    foreach( $chapters as $post ):
        setup_postdata( $post );
        ?>
        <div class="box more">
            <a href="<?php echo esc_url( get_permalink() ); ?>" alt="CONTEST ENTRY by <?php echo esc_attr( get_the_title() ); ?>" title="CONTEST ENTRY by <?php echo esc_attr(get_the_title()); ?> ">
                <img src="<?php echo catch_that_image() ?>" width="625px" alt="<?php echo esc_attr( get_the_title()); ?>"/>
                <div class="articleTitle">
                    <span class="titleType">CONTEST ENTRY<br /><span class="titleArticle"><?php the_title(); ?></span></span>
                </div>
            </a>              
        </div>
    <?php 
    endforeach; 
    wp_reset_postdata();
endif; 
?>
这里发生的事情是,我只是将您的代码分隔开来,使其更具可读性,在foreach循环中,我使用了setup_postdata() 它用于设置全局post数据,通过它,您可以使用模板标记,而无需传递函数的ID,您可以使用get_the_permalink() 而不是get_the_permalink($chapter->ID)foreach 循环I刚才使用此页面的原始post数据“清理”了post数据wp_reset_postdata()

结束

相关推荐

列出分类法:如果分类法没有POST,就不要列出分类法--取决于定制的POST-META?

这可能很难解释,我不知道是否有解决办法!?我有一个名为“wr\\u event”的自定义帖子类型和一个名为“event\\u type”的分层自定义分类法。自定义帖子类型有一个元框,用于event_date 并且与此帖子类型关联的所有帖子都按以下方式排序event_date. 我在循环中有一个特殊的条件来查询event_date 已经发生了-在这种情况下,它没有显示,但只列在我的档案中。就像你可以使用wp_list_categories() 我编写了一个自定义函数,它以完全相同的方式列出所有分类术语。现在