通常の投稿(カスタム投稿タイプではありません)、私がするべきすべてのことをしましたが、404ページネーションにエラーが見つかりませんでした。これが私のコードです
$category_id = get_query_var('cat'); //Using this to get category ID to meet some special requirements
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$args = array(
'posts_per_page' => 4,
'numberposts' => 50,
'paged' => $paged,
'cat' => $category_id
);
query_posts($args);
if ( have_posts() ) : while ( have_posts() ) : the_post();
$image = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), 'single-post-thumbnail' );
?>
<div id="post-item">
<div class="thumb"><img src="<?php echo get_stylesheet_directory_uri(); ?>/timthumb.php?src=<?php echo $image[0]; ?>&w=224&h=224&zc=1" /></div>
<div class="detail">
<h2 class="wrtitle"><span class="blue"><?php $category = get_the_category(); echo $category[0]->cat_name; ?> : </span><?php the_title(); ?></h2>
<div class="date"><?php the_date(); ?></div>
<div class="excerpt"><?php the_excerpt(); ?></div>
</div>
<div class="rmore"><a href="<?php the_permalink(); ?>"><img src="<?php echo get_stylesheet_directory_uri(); ?>/images/readmore.png" /></a></div>
</div>
<?php endwhile;
wp_reset_postdata();
else: ?>
<p><?php _e('No posts found'); ?></p>
<?php endif; ?>
<!-- Pagination Part -->
<div id="pagination">
<div class="next"><?php next_posts_link('next »') ?></div>
<div class="prev"><?php previous_posts_link('« previous') ?></div>
</div>
あなたの提案が必要です。
あなたのコードをテンプレートファイルcategory.php
に入れてください。
ループの前にすべての部分を削除します。カテゴリテンプレートに入ったら、カテゴリを取得し、ページを取得し、query_posts
..を使用してクエリを再実行する必要はありません。
だからあなたのcategory.php
は 単純に のようになるべきです:
if ( have_posts() ) : while ( have_posts() ) : the_post();
$image = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), 'single-post-thumbnail' );
?>
... post markup here
<?php endwhile;
else: ?>
<p><?php _e('No posts found'); ?></p>
<?php endif; ?>
<!-- Pagination Part -->
<div id="pagination">
<div class="next"><?php next_posts_link('next »') ?></div>
<div class="prev"><?php previous_posts_link('« previous') ?></div>
</div>
そのテンプレートに1ページに4回のフォレストしか表示させないようにするには、functions.php
で次のように使用します。
add_action('pre_get_posts','four_post_per_cat');
function four_post_per_cat( $query ) {
if ( ! is_admin() && is_main_query() && is_category() ) {
$query->set('posts_per_page', 4);
}
}
その後のnumberposts
とposts_per_page
は同義語ですが、numberposts
は非推奨です。それらに異なる値を設定するとnumberposts
は何もしません(あるいはposts_per_page
は何もしません。覚えていません...しかし、そのうちの1つを使用してください)。
範囲が(すべてのページで)到達した投稿の総数を制限している場合は、post_limit
addで functions.php
フィルターを使用します。
add_filter( 'post_limits', 'cat_post_limits' );
function cat_post_limits( limit ) {
return ( is_category() ) ? 'LIMIT 0, 50' : $limit;
}
query_posts
はパフォーマンスに関して非常に悪いので、絶対に使用しないでください。
注:書き換え規則を追加した場合は、必ず規則をフラッシュしてください。あなたのダッシュボードで 設定 - >パーマリンク に行き、 "Save Changes"をクリックしてください。
PS:あなたが最大50投稿になった場合、50は4で割り切れないので、最後のページは2投稿になります..なぜ52または48に制限を設定しないのですか?