0

特定のcategory-slug.phpページがあります。

最初のカテゴリ「バナー広告」を1ページに1つの投稿のみで表示し、その下に「注目」カテゴリの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();
4

3 に答える 3

0

リセットしていません:wp_reset_postdata();

カテゴリについて便利: http://codex.wordpress.org/Class_Reference/WP_Query#Category_Parameters

これが私のページの1つです 最初のループ:

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

2 番目のループ:

<?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()... ;を含むコードの残りの部分

于 2013-02-06T21:19:38.647 に答える
0

さて、私はついにそれを理解しました。特定の数の投稿を強制したい場合は、フィルターをその関数とともに追加し、ループの最後でそれを削除します。2 番目のループで 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');
于 2013-02-07T21:30:58.343 に答える