多种帖子类型的WordPress搜索结果

时间:2016-05-17 作者:BlueHelmet

我想把两者都展示出来postsattachments 在搜索结果中。基本上,我需要一些if 帖子有缩略图,请显示。else 显示附件图像(因为它们没有缩略图,直接从媒体库中提取)。

这是我试过的search.php, 但它不起作用:

<?php if ( have_posts() ) : ?>
    <?php while ( have_posts() ) : the_post(); ?>

        <?php
            echo \'<a class="search-item">\';
            if( has_post_thumbnail() ) { 
                $image_src = the_post_thumbnail( \'custom-size\', array( \'class\' => "img-style" ) );
            }
            else {
                $image_src = wp_get_attachment_image_src( \'custom-size\', array( \'class\' => "img-style" ) );
                echo \'</a>\';
            }
        ?>

    <?php endwhile; ?>
<?php endif; ?>

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

这个wp_get_attachment_image_src() 函数希望您也传递某种附件ID,而且它不会获取我们需要的图像HTML,因此我们应该使用wp_get_attachment_image().

IF 帖子有帖子缩略图,抓住它
ELSE IF 帖子中有任何附加图像,请抓取第一个
ELSE 是否显示占位符?我已经将循环顶部的else情况定义为默认情况。

if( have_posts() ) {
    while( have_posts() ) {
        the_post();
        $image_html = \'\'; // assign placeholder url here?

        if( has_post_thumbnail() ) {
            $image_html = get_the_post_thumbnail( $post->ID, \'custom-size\', array( \'class\' => \'img-style\' ) );
        } else { // We don\'t have a thumbnail - grab attachments
            $media = get_posts( array(
                \'post_type\'         => \'attachment\',
                \'posts_per_page\'    => 1,
                \'post_status\'       => \'any\',
                \'post_parent\'       => $post->ID
                \'post_mime_type\'    => array( \'image/jpeg\', \'image/gif\', \'image/png\', \'image/bmp\', \'image/tiff\', \'image/x-icon\' );
            ) );

            if( ! empty( $media ) ) {
                $image_html = wp_get_attachment_image( $media[0]->ID, \'cusotm-size\', false, array( \'class\' => \'img-style\' ) );
            }
        }

        if( ! empty( $image_html ) ) {
            echo \'<a href="\'. get_permalink() . \'">\' . $image_html . \'</a>\';
        }
    }
}
请注意,我还没有测试上述内容,所以请随意修改。