使用背景图像的全宽滑块Flexlider WordPress

时间:2016-07-22 作者:user53340

我希望有人能提供帮助,我已经使用Flexslider创建了一个滑块插件,可以使用自定义的帖子类型等。无论如何,这一切都很好,除了我想将图像设置为li中不包含的Flexslider的背景。我似乎不明白为什么语法是错误的。如果有人能帮忙那就太好了。这是我到目前为止的情况。实例here 我想要实现的目标。基本上,我需要保持一个固定的高度,并在图像发生故障时对其进行裁剪,这样它就不会像flexslider那样在移动设备上变得很小。我还需要它随着屏幕大小的增加进行缩放,这样它就不会像素化。

   <?php 
// Function used to display slider
function cs_get_slider(){

    $cs_slider= \'<div class="flexslider"><ul class="slides">\';

                query_posts( array( 
                         \'post_type\' => \'slider-image\',
                         \'posts_per_page\' => 10000 ) 
                 ); 

    if (have_posts()) : while (have_posts()) : the_post();

    $img= get_the_post_thumbnail(get_the_ID());
    $caption =  caption_content();      

    $cs_slider.=\'<li style="background: url(\'<?php echo $background_image[\'url\'] ?>\')">\'.$img.\'<div class="banner-caption meta">\'.$caption. \'</div></li>\';

    endwhile; endif; 
    wp_reset_query();
    $cs_slider.= \'</ul></div>\';

    return $cs_slider;
}

function cs_slider_shortcode(){
    $cs_slider= cs_get_slider();
    return $cs_slider;
}  
add_shortcode(\'slider\', \'cs_slider_shortcode\');
?>
这就是一切崩溃的地方。

$cs_slider.=\'<li style="background: url(\'<?php echo $background_image[\'url\'] ?>\')">\'.$img.\'<div class="banner-caption meta">\'.$caption. \'</div></li>\';
提前感谢!

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

从WordPress 4.4开始,您可以使用the_post_thumbnail_url() 在…内The Loop 要轻松获取特色图像源,请执行以下操作:

<div style="background-image: url(<?php the_post_thumbnail_url(); ?>);">
    //Your html code
</div>
如果需要与4.4之前的版本兼容,wp_get_attachment_image_src() 将完成这项工作。与其名称相反,它不会直接返回图像位置,而是返回一个包含位置、宽度、高度及其调整大小值的数组。您需要访问返回数组的第一个元素:

<?php

    $post_thumbnail_id = get_post_thumbnail_id();
    $featured_image = wp_get_attachment_image_src( $post_thumbnail_id, \'full\' ); //The second argument is the size

?>
<div style="background-image: url(<?php echo $featured_image[0]; ?>);">
    //Your html code
</div>
除此之外,你应该避免使用query_posts() 除非你确定你在做什么。您可以阅读更多有关此主题的内容here. 作为替代用途get_posts() 之后是setup_postdata() 正常工作,就像您在循环中的位置一样,或者使用WP_Query 对象

相关推荐