网站没有从我的查询中获得正确的特色图片

时间:2012-12-18 作者:harryg

在我的网站主页上,我有一系列链接到网站各个部分的互动程序。一个平铺链接到博客,我已经编写了一些代码来提取最新的帖子,并将其与帖子标题一起输出。以下是主题文件中的代码:

$z=0; //sets post counter
query_posts(array(  \'meta_key\' => \'_thumbnail_id\'  )); ?>
<?php if(have_posts()) : ?>
<?php while(have_posts() && $z<1) : the_post(); 


//Call a post image attachment
    $args = array( \'post_type\' => \'attachment\', \'numberposts\' => 1, \'post_status\' => null, \'post_parent\' => $post->ID ); 
    $attachments = get_posts($args);

    if ($attachments) {

        foreach ( $attachments as $attachment ) {
        $image = wp_get_attachment_image_src($attachment->ID,\'homethumbs\'); 
?>
<a href="<?php echo get_posts_page_url(); ?>" title="Visit the Serge Blog" id="homelink3" class="top_homelink"><img src="<?php echo $image[0]; ?>" width="308" height="308" id="home-blogthumb" class="side-homethumb wp-post-image" /> <p class="home_text">Blog<br/><span class="home_thumb_caption">Latest Post: <?php the_title(); ?></span></p>   </a>
<?php $z++;
}
//$usedthumbnails[] = get_the_post_thumbnail(); 
}
?>
<?php   
endwhile; 
endif; 
wp_reset_query(); ?>
我意识到这段代码实际上并没有得到特征图像,而是得到了一张附在帖子上的图像。这是因为博客海报有时会忘记“设置为特色图片”,但上传到帖子上的任何图片都会自动附加。在3.5版本中,特色图片似乎不一定附在帖子上,因此上面的代码将丢失这些图片。解决这个问题的最佳方法是什么?也许只需要调用最新的特色图片。。。我可以确保发帖人在他们的帖子中添加特色图片。

该网站是http://sergedenimes.com

EDIT: 这是我的更新代码:

<?php
global $post;
$args = array( \'numberposts\' => 1, \'meta_key\' => \'_thumbnail_id\' );
$myposts = get_posts( $args );

foreach( $myposts as $post ) :  setup_postdata($post); 
$thumb = wp_get_attachment_image_src( get_post_thumbnail_id($post->ID), \'homethumbs\' );
?>

<a href="<?php echo get_posts_page_url(); ?>" title="Visit the Serge Blog" id="homelink3" class="top_homelink"><img src="<?php echo $thumb[0]; ?>" width="308" height="308" id="home-blogthumb" class="side-homethumb wp-post-image" /> <p class="home_text">Blog<br/><span class="home_thumb_caption">Latest Post: <?php the_title(); ?></span></p> </a>

<?php endforeach; ?>
我想确定的是,如果我发布了一篇新文章,但没有给它一张特色图片,那么上面的查询是否会忽略它,并输出最后一篇有特色图片的文章?我希望\'meta_key\' => \'_thumbnail_id\' 辩论应该做到这一点。如果我错了,我希望不会得到附件的url,主页上的互动程序将是空白的(没有图像)。

1 个回复
SO网友:GhostToast

您正在提供meta_key 但我认为你需要meta_value. 有关更多信息,请参阅本文。我意识到在3.5中有些事情可能已经改变了,但这对我来说似乎并不正确。http://codex.wordpress.org/Class_Reference/WP_Query

如果你想获得特色图片,为什么不使用这样的东西呢?

if ( has_post_thumbnail() ) {
    the_post_thumbnail( \'medium\', array( \'class\' => "medium" ) );
}
编辑:添加更具体的用例:

if ( has_post_thumbnail() ) {
    $thumb = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), \'homethumbs\' );
?>
<a href="<?php echo get_posts_page_url(); ?>" title="Visit the Serge Blog" id="homelink3" class="top_homelink">
    <img src="<?php echo $thumb[0]; ?>" width="308" height="308" id="home-blogthumb" class="side-homethumb wp-post-image" /> 
    <p class="home_text">Blog<br/><span class="home_thumb_caption">Latest Post: <?php the_title(); ?></span></p> 
</a>
<?php } ?>

结束