2013-02-06 85 views
0

我有一個特定的類別 - slug.php頁面。WordPress的 - 每頁文章不工作爲特定類別slug.php

我想顯示第一個類別「橫幅廣告」,每頁只顯示1篇文章,然後在下面顯示來自「精選」類別的每頁3篇文章。

我不想使用: ** query_posts( 'posts_per_page = 4'); **

我已經試過pre_get_posts功能,但似乎無法得到它的工作。

現在每多數民衆贊成顯示頁面的職位數量是閱讀

在這裏,我在設置 - 分配的編號>是我當前的代碼:

$args1 = array(
    'category_name' => 'banner-ads', 
    'posts_per_page' => 1 
    ); 


$the_query = new WP_Query($args1); 


while ($the_query->have_posts()) : 
    $the_query->the_post(); 
    ar2_render_posts(null, array ('type' => 'node'), true); 
endwhile; 

wp_reset_postdata(); 


$args2 = array(
    'category_name' => 'featured', 
    'posts_per_page' => 3 
    ); 

$query2 = new WP_Query($args2); 

while($query2->have_posts()): 
    $query2->next_post(); 
    ar2_render_posts(null, array ('type' => 'traditional'), true); 
endwhile; 

wp_reset_postdata(); 

回答

0

你尚未進行復位:wp_reset_postdata();

有用的有關類別:http://codex.wordpress.org/Class_Reference/WP_Query#Category_Parameters

這裏是我的第一循環 頁面之一:

<?php 
$postq1 = new WP_Query(
array(
    'post_type' => array('post','yourcustom'), 
    'posts_per_page' => 1, 
    'category_name'=>'banner-ads') 
); 
if($postq1->have_posts()): 
    while ($postq1->have_posts()) : 
     $postq1->the_post();?> 
<article id="post-<?php the_ID();?>">....</article> 
<?php 
    endwhile; 
endif; 
wp_reset_postdata(); 
?> 

第二環:

<?php 
$postq2 = new WP_Query(
array(
    'post_type' => array('post','yourcustom'), 
    'posts_per_page' => 3, 
    'category_name'=>'featured') 
); 
if($postq2->have_posts()): 
    while ($postq2->have_posts()) : 
     $postq2->the_post();?> 
<article id="post-<?php the_ID();?>">....</article> 
<?php 
    endwhile; 
endif; 
wp_reset_postdata(); 
?> 

...與query_posts()代碼休息;

+0

似乎並沒有工作,但仍顯示出無論是在設置頁面中設置。 – jms

+0

當你在每個循環之前放置'wp_reset_postdata()'時,會發生什麼情況(所以它會在之前和之後,就像雙重複位一樣)。 OR 可能有問題'ar2_render_posts()' –

+0

我是能夠通過添加此功能,以控制所述第一回路中的量: – jms

0

好吧,我終於明白了。如果你想迫使它獲得一定數量的帖子,然後添加過濾器的功能,然後在循環結束時刪除它。我意識到我的第二個循環ar2_render_posts()函數與代碼衝突,所以我選擇從頭開始重做這個函數,因爲它基本上是一個佈局函數。

add_filter('post_limits', 'my_post_limits'); 

function my_post_limits($limit) { 
    if (in_category('banner-ads')) { 
     return 'LIMIT 0, 3'; 
    } 
    return $limit; 
} 

    $args1 = array(
     'category_name' => 'banner-ads' 
     ); 


    $the_query = new WP_Query($args1); 


    while ($the_query->have_posts()) : 
     $the_query->the_post(); 
     ar2_render_posts(null, array ('type' => 'node'), true); 
    endwhile; 

    wp_reset_postdata(); 
    remove_filter('post_limits', 'my_post_limits'); 
0

這是很簡單,只需在alter query_argsar2_render_posts

ar2_render_posts(null, array ( 
    'query_args' => array ('posts_per_page' => 1), 
), true); 
相關問題