在循环外发布缩略图

时间:2014-02-10 作者:Nikki Mather

我试图在循环外显示帖子缩略图。原因是我希望在自定义页面模板中显示特征图像,该模板将为设置自定义页面模板的特定页面设置标题图像。

我试过显而易见的the_post_thumbnail(); 正如所料,它没有起作用。在循环之外使用特色图像的最佳解决方案是什么?

我正在使用的自定义页面模板代码。。。

<div id="primary" class="content-area">
    <div id="content" class="site-content" role="main">

    <div class="home-header-image">

    <?php IMAGE WILL GO HERE ?> 

    </div>

    <div class="top_items_container">
        <?php if (!function_exists(\'dynamic_sidebar\') || !dynamic_sidebar(\'Home Top Content\')) :

endif; ?>
    </div><!-- .top_items_container -->

                <div class="entry-content">
                    <?php the_content(); ?>
                    <?php wp_link_pages( array( \'before\' => \'<div class="page-links"><span class="page-links-title">\' . __( \'Pages:\', \'twentythirteen\' ) . \'</span>\', \'after\' => \'</div>\', \'link_before\' => \'<span>\', \'link_after\' => \'</span>\' ) ); ?>
                </div><!-- .entry-content -->

                <footer class="entry-meta">
                    <?php edit_post_link( __( \'Edit\', \'twentythirteen\' ), \'<span class="edit-link">\', \'</span>\' ); ?>
                </footer><!-- .entry-meta -->
            </article><!-- #post -->

            <?php comments_template(); ?>

    </div><!-- #content -->
</div><!-- #primary -->

3 个回复
SO网友:Phuc Le

查看常规模板中的函数single\\u post\\u title()。php文件,您将发现以下内容:

$_post = get_queried_object();
在该函数中,您还可以看到:

$_post->post_title
这将为您提供循环之外的页面标题。

现在要获得特色图片,只需执行以下操作

$_post = get_queried_object(); <br>echo get_the_post_thumbnail($_post->ID);

SO网友:s_ha_dum

get_the_post_thumbnail() 将接受post ID作为第一个参数。抄本:

<?php $pages = get_pages(array(\'child_of\' => 1)); ?> 
<ul>
    <?php foreach ($pages as $page): ?>
        <li>
            <?php echo get_the_post_thumbnail($page->ID, \'thumbnail\'); ?>
            <h1><?php echo $page->post_title; ?></h1>
            <?php echo $page->post_content; ?>
        </li>
    <?php endforeach; ?>
</ul>
如果看不到更多的上下文,我想我不能做得比那个宽泛的大纲和一般的例子更好。

如果您的缩略图附加到分配给此模板的页面,则应通过以下操作完成:

// global $post; // maybe but probably not
echo get_the_post_thumbnail($post->ID);
$post 将是当前的post对象,并在循环开始到循环中的第一个post之前设置。在一个页面上只有一篇帖子,所以$post 应该是你想要的。

SO网友:kaiser

正如您在get_the_post_thumbnail(), 它所依赖的默认值get_the_ID() 如果未提供ID/1参数。和get_the_ID() 依赖于get_post() 它依赖于全球$post 对象填充者setup_postdata() 由global填写$wp_query/当前WP_Query 对象

因此,显而易见的是,只需提供ID 作为此附件的主帖子的帖子。换句话说,这个附件被分配到的第一个帖子。我知道不太方便。

还有另一个公共API函数允许直接通过其ID获取附件:

wp_get_attachment_image( $post_thumbnail_id, $size, $icon, $attr );
现在,这将返回附件的HTML。如果您只需要普通数据,请使用wp_get_attachment_image_src()

wp_get_attachment_image_src( $attachment_id, $size = \'thumbnail\', $icon = false )
它返回一个数组(url、宽度、高度),如果没有可用的图像,则返回false。

要仅获取src,请执行以下操作:

$attachmentArray = wp_get_attachment_image_src( $attachment_id, \'thumbnail\', false );

FALSE !== $attachmentArray
    AND print $attachmentArray[\'url\'];

结束

相关推荐