如何用‘Get_TEMPLATE_PART’改变第一篇文章的样式?

时间:2013-04-28 作者:Gregory Schultz

我需要帮助,使第一篇文章的风格不同于其他文章。不同之处在于,我使用这个get\\u template\\u部分是为了让无限滚动在我的网站上工作。

这是我在索引上使用的内容。php

<?php while (have_posts()) : the_post();
get_template_part( \'content\', get_post_format() );
endwhile; ?>
将从内容加载循环。php。这是我以前的循环:

<?php if (have_posts()) : ?>
<?php $post = $posts[0]; $c=0;?>
<?php while (have_posts()) : the_post(); ?>
<?php $c++; if( !$paged && $c == 1) :?>

<-! first post -->

<?php else :?>

<-! the rest -->

<?php endif;?>
<?php endwhile; ?>
<?php endif; ?>
谢谢你的帮助。

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

成功了!

<?php if ( 1 > get_query_var( \'paged\' ) ) { ?>
<?php if ( is_first_post() ) { ?>
    first! <br />
    <?php the_title();?>
    <?php the_excerpt();?>
<?php } else { ?>
<?php the_title();?>
<?php the_excerpt();?>
<?php } ?>
<?php } else { ?>
<?php the_title(); ?>
<?php the_excerpt();?>
<?php } ?> 
你可以看到它在起作用-http://openbayou.staging.wpengine.com

我的下一个问题(同一主题)是,是否可以对其进行清理,使其简单化,因为下面的代码是\\u first\\u页面是重复的

<?php } else { ?>
<?php the_title();?>
<?php the_excerpt();?>
<?php } ?>
<?php } else { ?>
<?php the_title(); ?>
<?php the_excerpt();?>
<?php } ?> 
非常感谢您的帮助!

SO网友:fuxia

如果您正在使用post_class() 在您的content 像这样的模板…

<div <?php post_class(); ?>>
…您可以对其进行筛选并添加特殊类:

add_filter( \'post_class\', \'mark_first_post\' );

function mark_first_post( $classes )
{
    remove_filter( current_filter(), __FUNCTION__ );
    $classes[] = \'first-post\';
    return $classes;
}
您在循环中的第一篇帖子现在将拥有该类first-post. 好的方面是:这个过滤器只运行一次,然后停用自己。

您还可以使用另一个助手函数:

function is_first_post()
{
    static $called = FALSE;

    if ( ! $called )
    {
        $called = TRUE;
        return TRUE;
    }

    return FALSE;
}
您可以测试第一篇帖子,然后在模板中测试:

if ( is_first_post() )
{
    // render the first post
}
else
{
    // the other posts
}

结束

相关推荐

New loop vs widget

所以,我有一个侧边栏,我将列出所有帖子,我可以使用一个小部件。但是,使用一个新的循环而不是一个小部件或优先选择是否合适?