0

WordPress管理パネルから1ページに10件の投稿を表示するように設定しましたが、最初のページと私の場合はそのホームページに11件の投稿を表示したいと思います。ですから、ホームページに11件の投稿を表示し、他のすべてのページには10件の投稿を表示したいと思います。

私はこのコードでそれを達成しようとしていますが、is_home()はページ番号に関係なく常にtrueを返します。

function home_custom_query( $query ) {

    if (  is_home() )
    {
        $query->query_vars['posts_per_page'] = 11; 
    }

    return $query; 
}
add_filter( 'pre_get_posts', 'home_custom_query' );  

ただし、上記のコードは、ホームページを含むすべてのページの投稿数を変更します。

また、ページ番号を検出するためにこれを試し、以下のように試しました

function home_custom_query( $query ) {

    if (  is_home() && $query->query_vars['paged'] == 0)
    {
        $query->query_vars['posts_per_page'] = 11; 
    }

    return $query; 
}
add_filter( 'pre_get_posts', 'home_custom_query' ); 

ホームページの場合、ページあたりの投稿数は11に変更されますが、他のすべてのページには何も表示されません。

また、目的を達成するcbnet-different-posts-per-pageプラグインを試しましたが、使用したくない機能がいくつか追加されています。問題の簡単な解決策が必要です。そして、私はこの問題を解決するためのきちんとしたそしてきれいな方法があると確信しています。

4

2 に答える 2

0

テンプレートにはどこかにループが必要です。その中でクエリ投稿を行うことができます。あなたはその中にパラメータのショーポストを与えます。彼女の例。

<?php
$page_num = $paged;
if ($pagenum='') $pagenum =1;

if(is_home) { $showposts = 11 } else { $showposts = 10 }

query_posts('showposts=' .$showposts. '&paged='.$page_num); 
?>



<?php if (have_posts()) : ?>
    <?php while (have_posts()) : the_post(); ?> 
       // WordPress loop
    <?php endwhile; ?> 
<?php endif; ?>
于 2012-10-18T12:35:09.310 に答える
0

私は次のようにそれをしました、あなたにも役立つかもしれません。

<?php
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$page_num = $paged;
if( $paged >1 ) 
    $showposts = 10; 
else 
    $showposts = 11;
query_posts('showposts=' .$showposts. '&paged='.$page_num);
?>


<?php if (have_posts()) : ?>
    <?php while (have_posts()) : the_post(); ?> 
       // WordPress loop
    <?php endwhile; ?> 
<?php endif; ?>
于 2012-10-18T19:01:56.473 に答える