wp修剪词语功能只适用于第一篇文章(wordpress)

问题描述:

我使用功能来显示博客的最后3篇文章。我希望第一个帖子显示标题并用“显示更多”链接修剪帖子内容,其他两个帖子只显示标题(没有内容)和“显示更多”链接。wp修剪词语功能只适用于第一篇文章(wordpress)

现在我用:

<?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(); ?> 

如何修改呢?

+1

while循环之前添加计数器= 1,并将其递增到循环。如果是1显示内容,其他不显示(只是标题)。 – mitkosoft

创建一个变量,它会返回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(); ?> 
+0

太棒了! @Ben告诉我是否可以将“显示更多”链接移至单独的div?我想对它进行设计,但现在它坚持发布内容。 – Pat

之前添加计数器while循环,并增加进入循环。如果是1点的显示内容,不otherwhise(只是标题和链接“...显示更多”):

<?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(); 
?> 

有了这样的计数器,你可以定义多少职位要显示的内容,多少有只有标题。

就像@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(); ?> 

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

注意:人们用计数器和循环做出的一个典型错误是不增加计数器,因此请确保包含$counter++行。


进一步阅读: