web-dev-qa-db-ja.com

ページ設定あたりの投稿数が機能していませんか?

はい、これは私の問題です。私は私のワードプレスサイトに静的なホームページと別の投稿ページを持っています。私は管理者パネルで2つを定義しました。今、私はまた表示する投稿の最大数を5に設定しました(設定>閲覧)が、すべての投稿(10+)はまだブログページに表示されています。

カスタムクエリを使用して、静的ホームページに最新の3件の投稿も表示しています。すなわち

$wp_query = new WP_Query( array( 'posts_per_page' =>3));

<results loop code>

しかし、このリストには3つ以上の投稿が表示されています。WordPressは、私が管理者パネルで行うのか、コードで行うのかを設定したposts_per_page制限を無視しているようです。一体何が起こっているの?サイトを開発するためにワードプレスを使用するのは今回が初めてです。これは誰にもよくある問題ですか?

編集:

静的なホームページを裸にして、単に投稿のタイトルを取得する基本的なコードブロックを残しました。 3つ以上の投稿がまだ返されています。これが現在ホームページにある実際の(そして唯一の)コードです:

<div id="content">

  <?php $wp_query = new WP_Query( array( 'posts_per_page' => 3) );?>

  <?php if ( $wp_query->have_posts() ) : ?>
  <ul>
    <?php while ( $wp_query->have_posts() ) : $wp_query->the_post(); ?>
    <li>
      <a href="<?php the_permalink() ?>"><?php the_title(); ?></a>
    </li>
    <?php endwhile;?>
  </ul>
  <?php endif; ?>

</div>
3
JCoder

これはテーマやプラグインがWordPressの設定を上書きしていることが原因である可能性があります。 TwentyElevenまたはTwentyTenテーマを有効にしたり、プラグインを無効にしたりして、うまく動作するかどうかを確認できます。

もしそうなら、どのテーマを使用しているか(それが事前作成されている場合)、またはどのプラグインを機能させるために無効にする必要があるかを投稿することができます。

1
OleVik

デバッグに時間がかかるので、このリストに自分のケースを追加したいと思います。アーカイブページがpre_get_postフックにフックすることで表示される投稿数を変更したのです。

add_filter('pre_get_posts', 'number_of_posts_on_archive');
function number_of_posts_on_archive($query)
{
    if(is_post_type_archive(array('post_type1', 'post_type2')))
    {
        $query->set('posts_per_page', 20);
    }
    return $query;
}

また、まったく異なる投稿タイプの投稿クエリが含まれるという問題を解決するために、if文に次のようなものを追加しました。

if( (is_post_type_archive(array('post_type1', 'post_type2'))) && ($query->get('post_type') !== 'post') )
{
    ....
}

私がここに投稿しているのは、これが私のために行った検索に関連したグーグル検索で出てきた最初の結果だからです。それで、1時間理解できない人を見つけるのに役立つかもしれません。

1
N.Schipper
 //just before calling your code add this and customize it as you like
 function hwl_home_pagesize( $query ) {
if ( is_admin() || ! $query->is_main_query() )
    return;

if ( is_home() ) {
    // Display only 1 post for the original blog archive
    $query->set( 'posts_per_page', 1 );
    return;
}

if ( is_post_type_archive( 'movie' ) ) {
    // Display 50 posts for a custom post type called 'movie'
    $query->set( 'posts_per_page', 50 );
    return;
  }
}
add_action( 'pre_get_posts', 'hwl_home_pagesize', 1 );
1
ashraf mohammed

N.Schipperは正しく言った。しかし、状態の唯一のものは十分な状態ではありません

! is_admin()

そのため、ページあたりの投稿数は必要なサイクルでのみ変更され、管理領域には影響しません。

if( (! is_admin()) && (is_post_type_archive(array('post_type1', 'post_type2'))) && ($query->get('post_type') !== 'post') )
{
  {
    $query->set( 'posts_per_page', 6 );
    return;
}
}
0
stefarer