如果POST-FORMAT==‘图库’条件

时间:2011-06-24 作者:shawn

我正在努力使我的主页模板显示的帖子格式“gallery”与其他格式略有不同,但到目前为止运气不佳。

这里有一个片段“在循环中”,显示了我正在尝试完成的任务。基本上说,如果post format=\'aside\'do x,elseif post format是gallery,那么我想显示缩略图,否则只显示内容。

<div class="entry">
    <?php

    if ( has_post_format( \'aside\' , $post_id )) {
        the_excerpt(__(\'Continue Reading &rarr;\', \'wptumble-fluid\'));

    } elseif ( has_post_format( \'gallery\' , $post_id )) {

        if ( has_post_thumbnail() ) {
                // use the thumbnail ("featured image")
                $thumb_id = get_post_thumbnail_id();
            the_post_thumbnail( \'thumbnail\' ); 
        } else {
            $attachments = get_children( array(
                \'post_parent\' => get_the_ID(),
                \'post_status\' => \'inherit\',
                \'post_type\' => \'attachment\',
                \'post_mime_type\' => \'image\',
                \'order\' => \'ASC\',
                \'orderby\' => \'menu_order ID\',
                \'numberposts\' => 1)
            );
            foreach ( $attachments as $thumb_id => $attachment )
                echo wp_get_attachment_image($thumb_id, \'thumbnail\' ); 
            }
    } else {
            if ( $fluidtheme_options[\'fluid_post_content\'] == "content" ) the_content(__(\'Continue Reading &rarr;\', \'wptumble-fluid\')); else the_excerpt();
    }

        wp_link_pages( $page_link_args );
    ?>

</div><!-- /.entry -->
旁白部分工作正常,最后一个选项检查主题选项页面。唯一不起作用的是我的elseif语句,我希望它能抓住帖子的附件。

可能只是我的php做错了,但这似乎是我能想到的最接近的。仍在学习过程中。

谢谢

2 个回复
最合适的回答,由SO网友:Chip Bennett 整理而成

这个很容易修复!中的第一个参数has_post_format() 是格式为的字符串post-format-{type}, 例如post-format-aside, 或post-format-gallery, 等

因此,例如,改变这一点:

has_post_format( \'aside\' , $post_id )
对此:

has_post_format( \'post-format-aside\' , $post_id )
清洗、漂洗并重复使用has_post_format().

EDIT

给出您的示例代码,我甚至会建议另一个潜在的选项,组合get_template_part()get_post_format().

如果创建模板零件文件entry-aside.phpentry-gallery.php, 以及默认值,entry.php, 然后:

1) 将此代码移动到entry-aside.php (并删除不支持的参数):

the_excerpt();
2)将此代码移动到entry-gallery.php:

if ( has_post_thumbnail() ) {
    // use the thumbnail ("featured image")
    $thumb_id = get_post_thumbnail_id();
    the_post_thumbnail( \'thumbnail\' ); 
} else {
    $attachments = get_children( array(
        \'post_parent\' => get_the_ID(),
        \'post_status\' => \'inherit\',
        \'post_type\' => \'attachment\',
        \'post_mime_type\' => \'image\',
        \'order\' => \'ASC\',
        \'orderby\' => \'menu_order ID\',
        \'numberposts\' => 1)
    );
    foreach ( $attachments as $thumb_id => $attachment )
        echo wp_get_attachment_image($thumb_id, \'thumbnail\' ); 
}
3)将此代码移动到entry.php

if ( $fluidtheme_options[\'fluid_post_content\'] == "content" ) the_content(__(\'Continue Reading &rarr;\', \'wptumble-fluid\')); else the_excerpt();
4)用以下内容替换整个if/else条件块:

get_template_part( \'entry\', get_post_format() );
现在,对于您当前的用例来说,这可能有点过头了,但好处是,如果将来您决定支持其他post格式类型,您只需添加entry-{type}.php, 并且您的模板已经设置为支持它!例如,如果添加对引号的支持,只需添加entry-quote.php, 使用任何适当的代码,您不必更改任何现有代码。

SO网友:mfields

我喜欢对此使用get\\u post\\u格式:

if ( \'gallery\' == get_post_format() ) {
    print \'TACO PARTY!!!\';
}

结束

相关推荐