我尝试在Wordpress中使用非常简单的幻灯片,但在尝试检索幻灯片的正确图像大小时遇到了问题。
我可以使用以下代码毫无问题地检索第一幅图像:
<?php if ( $attachments ) {
$first_image = array_slice($attachments, 0, 1);
$first_thumb = wp_get_attachment_url( $first_image[0]->ID, \'blog-thumb\', false );
?>
<img src="<?= $first_thumb; ?>" alt="" title="" />
但是,我使用以下代码检索其余图像:
<?php foreach ($attachments as $attachment) { ?>
<li><a href="<?= wp_get_attachment_url( $attachment->ID, \'blog-thumb\', false ); ?>"></a></li>
<?php } ?>
我能够检索图像,但检索图像的原始版本,而不是“博客拇指”维度。
我不知道我做错了什么。。。
以下是我检索附件的方式:
<?php if ( $post->post_type == \'post\' && $post->post_status == \'publish\' ) {
$attachments = get_posts( array(
\'post_type\' => \'attachment\',
\'posts_per_page\' => -1,
\'post_parent\' => $post->ID,
\'exclude\' => get_post_thumbnail_id(),
\'orderby\' => \'menu_order\',
\'order\' => \'ASC\'
) );
?>
我还添加了整个代码,所以大家可以查看整个情况:
<?php if ( $post->post_type == \'post\' && $post->post_status == \'publish\' ) {
$attachments = get_posts( array(
\'post_type\' => \'attachment\',
\'posts_per_page\' => -1,
\'post_parent\' => $post->ID,
\'exclude\' => get_post_thumbnail_id(),
\'orderby\' => \'menu_order\',
\'order\' => \'ASC\'
) );
?>
<?php if ( $attachments ) {
$first_image = array_slice($attachments, 0, 1);
$first_thumb = wp_get_attachment_image_src( $first_image[0]->ID, \'blog-thumb\', false );
?>
<div id="post-<?php the_ID(); ?>" <?php post_class() ?>>
<div class="rss-container">
<div id="slideshow<?php the_ID(); ?>" class="rs-slideshow">
<div class="slide-container">
<img src="<?php echo \'\' . $first_thumb[0] . \'\'; ?>" alt="" title="" />
</div>
<ol class="slides">
<?php foreach ($attachments as $attachment) { ?>
<li><a href="<?= wp_get_attachment_image( $attachment->ID, \'blog-thumb\'); ?>"></a></li>
<?php } ?>
</ol>
</div>
<!--<ul class="controls clearfix">
<li><a href="#" class="rs-play-pause" data-control-for="slideshow<?php the_ID(); ?>">Click to Pause</a></li>
<li><a href="#" class="rs-prev" data-control-for="slideshow<?php the_ID(); ?>">Previous Slide</a></li>
<li><a href="#" class="rs-next" data-control-for="slideshow<?php the_ID(); ?>">Next Slide</a></li>
</ul>-->
<?php } ?>
<?php } ?>
</div> <!--rss-container-->
如上所述,我在尝试检索列表中正确的图像大小时遇到了困难,检索第一个图像的代码就像一个符咒。
谢谢你的帮助!
最合适的回答,由SO网友:Adam 整理而成
你需要echo
你的wp_get_attachment_image
, 但由于此函数以的形式返回HTML对象,
<img src="path/to/image.jpg"/>
它将不起作用,因为您正试图使用
href
锚的属性
<a>
这是错误的,
<a href="<?= wp_get_attachment_image( $attachment->ID, \'blog-thumb\'); ?>"></a>
这是对的,
<a href="<?php echo wp_get_attachment_image_src( $attachment[0]->ID, \'blog-thumb\'); ?>">
<?php echo wp_get_attachment_image( $attachment->ID, \'blog-thumb\'); ?>
</a>
总之,像这样的东西有点整洁,尽管我们仍然在混合两个图像函数,可以简化为使用
wp_get_attachment_image_src
但是,以下方法仍然有效,
foreach ($attachments as $attachment) {
$src = wp_get_attachment_image_src( $attachment[0]->ID );
$html = \'<a href="\'.$src.\'">\';
$html .= wp_get_attachment_image( $attachment->ID, \'blog-thumb\') .\'</a>\';
echo $html;
}