2013-11-27 87 views
1

我一直在建立一個基於inuitcss的WordPress模板來獲得響應式頁面。WordPress分區動態列Columns

在此模板中,我試圖從某個類別獲取WP帖子,並將它們劃分爲預定義數量的列。爲了達到此目的,我計算了類別中的帖子數量,並計算了帖子必要的數據以均勻分割。

我一直在使用this(頁面上的最後一個)示例並更新了幾個不推薦使用的函數。

我目前面臨的問題是所有的colums都加載了相同的帖子,他們只加載最後兩個而不是類別中所有可用的帖子。

下面的代碼是我目前使用的,結果可以在http://www.alikivanderkruijs.com/wp找到(點擊'項目')。

我一直坐在這一段時間,似乎無法得到正確的。我希望有人能幫助我!

<?php 
$proj_posts = get_posts('cat=15'); 
$count_proj_posts = count($proj_posts); 
$split_proj_posts = round($count_proj_posts/2); 
?> 
<div class="gw"> 
     <div id="menuwrap"> 
      <h3 class="work">PROJECTS</h3> 
       <div> 
        <div class="g one-sixth lap-one-sixth nomob"> 
        &nbsp; 
        </div> 
        <div class="g two-sixths lap-two-sixths palm-one-whole"> 
         <div class="content"> 
         <?php query_posts('cat=15&showposts=' . $split_proj_posts . ''); ?> 
         <?php $posts = get_posts('posts_per_page=' . $split_proj_posts . '&offset=0'); foreach ($posts as $post) : the_post(); ?> 
         <?php static $proj_count1 = 0; if ($proj_count1 == $split_proj_posts) { break; } else { ?> 
          <div <?php post_class(); ?>> 
          <h4><a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a></h4> 
          <?php the_content(); ?> 
          </div> 
          <?php $proj_count1++; } ?> 
          <?php endforeach; ?> 
         </div> 
        </div> 
        <div class="g two-sixths lap-two-sixths palm-one-whole"> 
         <div class="content"> 
          <?php rewind_posts(); ?> 
          <?php query_posts('cat=15&showposts=' . $split_proj_posts . ''); ?> 
          <?php $posts = get_posts('posts_per_page=' . $split_proj_posts . '&offset=' . $split_proj_posts . ''); foreach ($posts as $post) : the_post(); ?> 
          <?php static $proj_count2 = 0; if ($proj_count2 == $split_proj_posts) { break; } else { ?> 
          <div <?php post_class(); ?>> 
          <h4><a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a></h4> 
          <?php the_content(); ?> 
          </div> 
          <?php $proj_count2++; } ?> 
          <?php endforeach; ?> 
         </div> 
        </div> 
        <div class="g one-sixth lap-one-sixth nomob"> 
        </div> 
       </div> 

回答

0

你是過於複雜了,簡單地得到所有的職位和計數,直到半,然後回顯出來的關閉和開啓標籤來創建一個新的行:

  <div class="gw"> 
       <div id="menuwrap"> 
        <h3 class="work">PROJECTS</h3> 

        <div> 
         <div class="g one-sixth lap-one-sixth nomob"> 
          &nbsp; 
         </div> 
         <div class="g two-sixths lap-two-sixths palm-one-whole"> 
          <div class="content"> 
           <?php 
           $args = array(
            'numberposts' => -1, 
            'posts_per_page' => '', 
            'offset' => 0, 
            'category' => '15', 
            'orderby' => 'post_date', 
            'order' => 'DESC', 
            'include' => '', 
            'exclude' => '', 
            'meta_key' => '', 
            'meta_value' => '', 
            'post_type' => 'post', 
            'post_mime_type' => '', 
            'post_parent' => '', 
            'post_status' => 'publish', 
            'suppress_filters' => true); 
           $posts_array = get_posts($args); 
           $split_at = round(count($posts_array)/2)-1; 
           $count = 0; 
           foreach ($posts_array as $post_object):setup_postdata($post); 
            ?> 
            <div <?php post_class(); ?>> 
             <h4><a href="<?php the_permalink() ?>" rel="bookmark" 
               title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a> 
             </h4> 
             <?php the_content(); ?> 
            </div> 
            <?php 
            //IF we are halfway through, close 1st row and 
             start a new one 
            if ($count == $split_at) { 
             ?> 
          </div> 
         </div> 
         <div class="g two-sixths lap-two-sixths palm-one-whole"> 
          <div class="content"> 
             <?php 
            } 
            $count++; ?> 

            <? 
           endforeach; 
           ?> 
          </div> 
         </div> 
         <div class="g one-sixth lap-one-sixth nomob"> 
         </div> 
        </div> 
       </div> 

我已經離開了全ARGS數組,因爲它對別人很有用,但你只需要在你的情況下使用cat參數。

編輯好的,setup_postdata有缺陷,只檢查了文檔,並沒有像預期的那樣工作。建議的解決方法是設置全局post對象,如下所示:

setup_postdata($GLOBALS['post'] =& $post_object) 

更改該部分應解決該問題。計數問題仍然很奇怪。

+0

感謝您的回答@ user574632。這確實看起來更加整潔,但由於某種原因,它還不適合我。我試圖找出發生了什麼事情(即使php錯誤報告,我也會得到一個完全空白的頁面)。當我發現有什麼問題時,我會在這裏回報。 – KlaasM

+0

@KlaasM當然。你確定評論//如果我們是......在一行上?我問,因爲stackoverflow已經把它切成兩個,這將導致一個PHP錯誤,除非你註釋掉第二行,以及通過添加兩個正斜槓://開始一個新的。 – Steve

+0

是的,我擺脫了那一個 - 我認爲這可能與一個額外的div從某處爬起來有關。但是,現在的問題是,出於某種原因,它只顯示最後的帖子條目,忽略了類別請求[Image](http://i.minus.com/ibqtg3fYkmqITY.png)。此外,計數似乎已關閉,這似乎相當奇怪,我.. [圖片](http://i.minus.com/ibjMrOQfJ8bu1f.png)。測試我寫了 $ countit = count($ posts_array); echo'帖子數量:'。 $ countit; 和在alikivanderkruijs.com/wp上看到的,它只有5個條目,而有7個。 – KlaasM