wp trim words功能仅适用于第一篇文章(wordpress)

时间:2016-04-28 10:18:53

标签: php wordpress function

我使用功能显示博客的最后3个帖子。我希望第一篇文章显示标题和修剪帖子内容"显示更多"链接和其他2个帖子仅显示标题(没有内容)"显示更多"链接。

现在我用:

<?php query_posts('category_name=blog&showposts=3'); ?>
    <?php while (have_posts()) : the_post(); ?>
        <li>
        <a href="<?php echo get_permalink($post->ID); ?>">
        <p class="news_title"><?php $title = get_the_title(); echo wp_trim_words( $title , '4', $more = null ); ?></p></a>
        <div class="post_skrot"><?php echo wp_trim_words( get_the_content(), $num_words = 8, $more = '... <a class="button_more" href="'. get_permalink($post->ID) . '">show more >> </a>' ); ?></div>

    </li>
    <?php endwhile; ?>
    <?php wp_reset_query(); ?>

如何修改?

3 个答案:

答案 0 :(得分:0)

如果是第一篇帖子,则创建一个将返回true的变量,如果不是,则创建false

<?php
//Establish first post check variable
$first_post = true;

query_posts('category_name=blog&showposts=3');
    while (have_posts()) : the_post(); ?>
        <li>
            <a href="<?php echo get_permalink($post->ID); ?>">
            <p class="news_title"><?php $title = get_the_title(); echo wp_trim_words( $title , '4', $more = null ); ?></p></a>
            <?php if($first_post) { ?>
                <div class="post_skrot"><?php echo wp_trim_words( get_the_content(), $num_words = 8, $more = '... <a class="button_more" href="'. get_permalink($post->ID) . '">show more >> </a>' ); ?></div>
            <?php } else { ?>
                <div class="post_skrot"><a class="button_more" href="'.get_permalink($post->ID).'">show more>> </a></div>
            <?php } ?>
        </li>

        <?php
        //Change value of $first_post
        $first_post = false;
    endwhile;
wp_reset_query(); ?>

答案 1 :(得分:0)

在while循环之前添加一个计数器并将其递增到循环中。如果是1显示内容,则不是(仅标题和链接'...显示更多'):

<?php
    query_posts('category_name=blog&showposts=3');
    $postCount = 1;
    while (have_posts()) :
        the_post();
        ?>
        <li>
            <a href="<?php echo get_permalink($post->ID); ?>">
                <p class="news_title">
                    <?php
                    $title = get_the_title();
                    echo wp_trim_words($title, '4', $more = null);
                    ?>
                </p>
            </a>
            <div class="post_skrot">
                <?php 
                if($postCount == 1){
                    //displays both content and link 'show more'
                    echo wp_trim_words(get_the_content(), $num_words = 8, $more = '... <a class="button_more" href="' . get_permalink($post->ID) . '">show more >> </a>'); 
                }else{
                    //displays only link 'show more'
                    echo '... <a class="button_more" href="' . get_permalink($post->ID) . '">show more >> </a>';
                }
                ?>
            </div>
        </li>
        <?php
        $postCount++;
    endwhile;
    wp_reset_query();
?>

使用此类计数器,您可以定义要显示的帖子内容数量,以及只有标题数量的内容。

答案 2 :(得分:0)

正如@mitkosoft在评论中所说,你想在你的while循环中添加一个计数器来确定这是否是第一次迭代。如果是,则添加附加信息,如果没有添加任何内容。

<?php query_posts('category_name=blog&showposts=3'); ?>
<?php 

    $counter = 0;

    while (have_posts()) : the_post(); ?>
        <li>
            <a href="<?php echo get_permalink($post->ID); ?>">
                <p class="news_title"><?php $title = get_the_title(); echo wp_trim_words( $title , '4', $more = null ); ?></p>
            </a>
            <?php if($counter < 1):?>
                <div class="post_skrot"><?php echo wp_trim_words( get_the_content(), $num_words = 8, $more = '... <a class="button_more" href="'. get_permalink($post->ID) . '">show more >> </a>' ); ?></div>
            <?php endif; ?>
        </li>
        <?php $counter++; ?>        
    <?php endwhile; ?>
<?php wp_reset_query(); ?>

此解决方案的关键部分是添加$counterif($counter < 1)语句和计数器增量$counter++。如果您决定要使用修剪过的单词超过1个帖子,您可以在if语句中增加这样的数字:if($counter < 5)这将为您提供带有修剪单词的前5个帖子。

注意:人们使用计数器和循环犯下的一个经典错误就是没有递增计数器,所以请确保包含$counter++行。

进一步阅读: