2016-06-21 29 views
0

私は以下のコードで助けが必要です。これはアルファベット順に1列に表示されます。これを3列に表示するにはどのように変更できますか?複数の列にWordpressを表示する投稿タイプ

Apple 1 
Apple 2 
Apple 3 

B

Beattle 1 
Beattle 2 
Beattle 3 

C

Cattle 1 
Cattle 2 
Cattle 3 

Iは総ポストから2ベースに列を分割します。 orderbypost_titleorderあると

$count_posts = wp_count_posts('partner'); 
$lastChar = '';     

while($list->have_posts()): $list->the_post(); 
    global $post; 

    $brandname = $post->post_title; 
    $char = $brandname[0];      

    if ($char !== $lastChar) { 
     if ($lastChar !== '') 
      echo '<br>';      
      echo "<div style='padding:10px; background:red; 
        color:white; font-weight:bold;'>". 
       strtoupper($char)."</div>"; 
     //print A/B/C etc 
     $lastChar = $char; 
    }       

    echo '<li><a href="'.$post->link.'" 
       title="'.$post->post_title.'" 
       target="_BLANK" >' . 
     $brandname.'</a></li>';       


    endwhile; 

    wp_reset_postdata(); 
+1

コードの書式を向上させるには、このスタイルを追加し、上記$inc=0を宣言します頭言い訳。 – Prune

+0

プルーンありがとうございます。あなたは私がいますか? – user3103905

+0

@ user3103905私の答えをチェックしてください –

答えて

0

この

がGETポストWP_Queryに使用をASC

その他のコードが細かいチェック怒鳴るコードを表示するために

$args = array(
     'posts_per_page' => -1, 
     'post_type'   => 'partner', 
     'post_status'  => 'publish', 
     'orderby'   => 'post_title', 
     'order'    => 'ASC', 

    ); 
$list = new WP_Query($args); 
$count_posts = wp_count_posts('partner'); 
$lastChar = ''; 
if ($list->have_posts()) : 
while($list->have_posts()): $list->the_post(); 
    global $post; 

    $brandname = $post->post_title; 
    $char = $brandname[0];      

    if ($char !== $lastChar) { 
     if ($lastChar !== '') 
      echo '<br>';      
      echo "<div style='padding:10px; background:red; 
        color:white; font-weight:bold;'>". 
       strtoupper($char)."</div>"; 
     //print A/B/C etc 
     $lastChar = $char; 
    }       

    echo '<li><a href="'.$post->link.'" 
       title="'.$post->post_title.'" 
       target="_BLANK" >' . 
     $brandname.'</a></li>';       


    endwhile; 
    endif; 
    wp_reset_postdata(); 

EDITを働いているされて試してみてくださいin 3列

は、whileループ

変更古いブロックと、この場合ボック

if ($char !== $lastChar) { 
       if($inc!=0){echo "</div>";}$inc++;    
       echo "<div class='colm'><div style='padding:10px; background:red; 
         color:white; font-weight:bold;'>". 
        strtoupper($char)."</div>"; 
      //print A/B/C etc 
      $lastChar = $char; 
} 

はCSS

.colm{ 
     float:left; 
     margin: 10px; 
     width: 30%; 
    } 

Image

+0

こんにちはアンコール、ご返信ありがとうございます。上記のコードは動作しています。私の問題は、3列と言って表示する方法です。 – user3103905

+0

@ user3103905私の編集の回答を確認してください –

+0

こんにちはAnkur、私は2番目の答えを修正することができますか?結果のスクリーンショットを投稿しました。問題は適切にグループ化されないということです。 – user3103905

関連する問題