2016-09-09 4 views
2

WordPressのこの特定のレイアウトで私の最近のブログ投稿を表示したいと思います。ここでは、以下の通りです:ブートストラップを使ってWordPressの投稿をテーブルに表示するには?

1|2|3 
----- 
4|5|6 

ここに私のコードは、私はWordPressのループが年代順に行く最後の6件の投稿を表示し、ノー持って使用したい.....これまで

<div class="container post_container"> 
    <div class="row"> 
     <div class="col-xs-12"> 
     <h1>Recent Posts</h1> 

      <?php 

      $recentPost = new WP_Query('type=post&posts_per_page=6&order=ASC&'); 


      if(have_posts()) { 
       while($recentPost->have_posts()) { 
        $recentPost->the_post(); ?> 


     <br> 
     <br> 

     <div class="posts_table"> 
      <--Where all recent posts will be displayed--> 
     </div> 



        <?php 

       } 
      } 



      ?> 

ですどのようにそれを作成し、非常に混乱したアイデア。私はHTMLテーブルまたはブートストラップグリッド、あるいはその両方を使用する必要があるかどうかはわかりません。

+0

テーブルやグリッド(それが何であれ)を持つマークアップを含むようにPHPを修正する必要があります。これを最も良く行うには、wpビューファイルを変更または作成する必要があります。 – happymacarts

+0

だから、それは手書きではないと言っているのですか?それが私の目標でした。 –

+0

これはあなたがコードを提供したこのテーマテンプレートにコード化することができます。コメントには誤解があります。 @happymacartsが言っていることは、このテーマテンプレートにhtmlマークアップを含める必要があるということです。あなたが意味することは、そのコードが何であるか、どこに配置するかを知る必要があるということです。 –

答えて

2

引数としてWP_Query引数を使用すると、混乱を避けることができます。

時系列で投稿を取得したいので、dateで注文してください。クラスWP_Queryのインスタンスは次のようになります。

$recentPost = new WP_Query(
    array(
     'type'   => 'post', 
     'posts_per_page' => 6, 
     'order'   => 'ASC', 
     'orderby'  => 'date' // Order by date! 
    ) 
); 

その後、私はあなたが行と列でブートストラップ使用している参照してください。

まずステップ、しばらく()ループの周りのすべてを作成:whileループ内のすべてのものを構築し、

<?php 


    if(have_posts()) { 

     // First, build parent DIV element outside the while() loop 
     ?> 

     <div class="row posts_table"> 

     <?php 

     // Setup the counter 
     $counter = 0; 

セカンドを:

 // Iterate over the posts 
     while($recentPost->have_posts()) { 

      // Get next 
      $recentPost->the_post(); 

      // Render post content here 
      // Bootstrap uses 12 columns, we want 3 blocks. 12/3 = 4 thus use cols-xs-4. 
      ?> 

      <div class="cols-xs-4"> 
       <?php the_title(); ?> 
      </div> 

これはトリッキーな部分です。 3つの投稿の後、新しい行要素を作成しています。どうして?ブートストラップは12列を連続して使用するように設計されているため、これ以上は使用できません。

このコードを後でリファクタリングする場合は、1ページあたり9/15の投稿が必要な場合は、WP_Query内の配列からposts_per_pageの値を簡単に3,6,9,12でブレークインすることなく簡単に更新できます。そうです。

  <?php 

      // Increment for next post 
      $counter++; 

      // Use the modulo to break a Bootstrap row and start a new one 
      // The HTML inside this control flow will be printed every third post (every third iteration). 
      if($counter % 3 == 0){ 
       ?> 
       </div> 
       <div class="row posts_table"> 
       <?php 
      } 

     } 

最後に、最後の.row.posts_table要素を閉じるだけで済みます。

 ?> 

     </div> 
     <!-- end of .row.posts_table --> 

     <?php 
    } 


?> 

また、WordPress documentation on WP_Query、特にWP_Query orderby partをチェックしてください。

.posts_tableはウェブサイトに意味があるかどうかわかりませんが、そうでない場合は削除できます。

+0

ブートストラップは、内部の列の総量が12を超えた場合にうまく動作するようにしばらく前に調整されました。新しい行にラップするだけです。 '.col-xs-4'で6つの要素を追加すると、うまく動作して同じサイズの2行にラップされます。 https://jsfiddle.net/williampatton/1uk8of11/ –

+0

私はそれを知らなかった。それは素晴らしい開発です。新しいブートストラップバージョンをお持ちの場合は、そのトリッキーな部分をスキップすることができます。 – Joachim

+0

Yup :)簡略化のため、しばしば省略することができます。明らかに可能な限りいつでも '.row'でラップするのが良い習慣ですが、追加の努力は本当に価値がありません。 –

1

あなたはこのようなものを探しているかもしれないと思います。 @Joachimはもっと深い答えを提供していますが、以下は元のコードを修正したものです。

<div class="container post_container"> 
    <div class="row"> 
     <div class="col-xs-12"> 
     <h1>Recent Posts</h1> 

      <?php 

      $recentPost = new WP_Query('type=post&posts_per_page=6&order=ASC&'); 


      if(have_posts()) { 
       // the wrapper div goes between the IF outside the while 
       // added a '.row' class here ?> 
       <div class="posts_table row"> 
        <?php 
        while($recentPost->have_posts()) { 
         $recentPost->the_post(); 
          // the column class is added below here inside the WHILE 
          // it needs to output on each loop ?> 
          <div class="col-xs-4"> 

           <!-- post content comes here --> 

          </div> 

         <?php 

        } // end the WHILE 
       // the .posts_table wrapper is closed here outside the WHILE inside the IF ?> 
       </div> 
      <?php 
     } // end the IF 




      ?> 
+0

これはTSが動作するのが簡単かもしれません。私は冗長になりがちです。 – Joachim

+0

@ジョアキム私は時々ハハと同様の冗長性の問題があります。正直言って私はあなたの答えがあなたの質問にポップアップしたときにあなたのようなより完全な答えを書いている途中でした。代わりに私は元のコードOPに基づいて非常に単純なサンプルコードを貼り付けました。私は、ここの両方の例が、この問題からOPの利益を増やす可能性が高いと考えていました。 –

関連する問題