从QUERY_POSTS切换到WP_QUERY,现在不工作了吗?

时间:2012-04-20 作者:Brian Thornton

所以我在https://wordpress.stackexchange.com/questions/49705/a-little-help-cleanup-from-a-real-coder/49712#49712 其中一条评论是不使用query_帖子,而是使用WP_query。所以我做了一些挖掘,并尝试实现它,现在代码没有完全工作。MultiPostThumbnails没有拉动img,我只得到了The\\u post\\u thubnail,没有额外的img。我做错了什么?

function efs_get_slider(){

    $slider= \'<div id="ctslider">
                <div class="flexslider">
                    <ul class="slides">\';

    $my_posts = new WP_Query();
    $efs_query= "post_type=slider-image";
    $my_posts->query($efs_query);


    if($my_posts->have_posts()) : while ($my_posts->have_posts()) : $my_posts->the_post(); 

        $flexID = $my_posts->ID;
        $img1= wp_get_attachment_image( get_post_thumbnail_id($flexID),\'full\',0 );
        $imagemain =  preg_replace( \'/(width|height)=\\"\\d*\\"\\s/\', "", $img1 );

        if (class_exists(\'MultiPostThumbnails\')) {
            $image_name = \'feature-image-2\';
            if (MultiPostThumbnails::has_post_thumbnail(\'slider-image\', $image_name)) {
                $image_id = MultiPostThumbnails::get_post_thumbnail_id(
                    \'slider-image\',
                    $image_name,
                    $flexID
                );
                $attr = array(\'class\' => "secondaryslider");
                $image = wp_get_attachment_image( $image_id, \'full\', false, $attr );
                $imagesecondary = preg_replace(
                    \'/(width|height)=\\"\\d*\\"\\s/\',
                    "",
                    $image
                );
            }
        };

        $cttitle = get_the_title();
        $ctexcerpt = get_the_excerpt();

        $slider.=\'<li><div class="fourcol secondaryimg">\'.$imagesecondary.\'</div>\';
        $slider.=\'<div class="threecol flex-caption"><h3>\'.
            $cttitle.\'</h3><p>\'.$ctexcerpt.\'</p></div>\';
        $slider.=\'<div class="fivecol last">\'.$imagemain.\'</div></li>\';


    endwhile; endif; wp_reset_postdata();


    $slider.= \'</ul>
    </div></div>\';

    return $slider;
}

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

我不熟悉MultiPost缩略图,但我怀疑您的问题是:

$flexID = $my_posts->ID;
该代码似乎试图获取WP\\u查询对象本身的ID。我认为这不存在。即使这样,也不会对你有多大好处。

相反,请使用:

$flexID = get_the_ID();
该代码获取循环中当前帖子的ID。

通常,请确保查看WP_Query codex page. 你可以把事情做得更紧一些。例如,整个查询可以位于一行上:

$my_posts = new WP_Query( \'post_type=slider-image\' );

结束

相关推荐

Communicate between plugins

我已经创建了两个WordPress插件。如果两个插件都安装了,那么这两个插件之间就可以进行一些有益的合作。那么我的问题是:让他们合作的最佳方式是什么?如何检测某个插件是否已启用?如何传输信息?我想我可以用globals,但有更好的方法吗?