2016-04-28 9 views
0

ブログを最後に3つの投稿を表示する機能を使用します。私は、最初の投稿をタイトルとトリム投稿コンテンツを "もっと見る"リンクで表示し、他の2つの投稿はタイトルを表示します(コンテンツなし)。wpトリムワードは、最初の投稿(ワードプレス)のためだけに機能します

今、私が使用します。

<?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

答えて

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

恐ろしい! @Benはdivを分割するために "もっと見る"リンクを移動することは可能ですか?私はそれをスタイルしたいと思いますが、今は内容を投稿することに固執しています。 – Pat

0

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

は、このようなカウンタを使用すると、どのように多くの記事が表示されるコンテンツを、どのように多くの持っている上で定義することができますタイトルのみ。

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

このソリューションの重要な部分は、$counterのほか、if($counter < 1)文と、カウンタインクリメント$counter++です。トリムされた単語で1つ以上の投稿が必要と判断した場合は、if文で数字を増やすことができます:if($counter < 5)トリミングされた単語の最初の5つの投稿が表示されます。

注:カウンタやループを使用してカウンタを増やしていない古典的な間違いの1つは、$counter++行が含まれていることを確認してください。


参考資料:

関連する問題