为了进一步了解wordpress,我一直在从头开发一个主题,并使用插件ACF和CPT UI,以创建一个简单直观的后台界面。
我的问题是在前端。我一直在为主页创建分页(使用自定义查询),效果非常好。对于类别页面(在名为category.php的模板中),情况并非如此。
为了找到一个解决方案,我已经在google上搜索了几个小时,但当我对permalinks没有任何问题时,一切似乎都与permalinks有关(我使用的是默认结构/%postname%/)。
以下是我的分类页面的代码,包括自定义循环和分页:
<?php
$paged = ( get_query_var(\'page\') ) ? get_query_var(\'page\') : 1;
$my_videos = new WP_Query(array(
   \'post_type\' => \'video\', 
   \'category_name\' => single_cat_title(\'\', false), 
   \'posts_per_page\' => 6
)); 
 if ( $my_videos->have_posts() ) :  
  while ($my_videos->have_posts()) : $my_videos->the_post();
   show_video_thumbnails();
  endwhile; 
else:  ?>
<p><?php _e( \'Sorry, no posts matched your criteria.\' ); ?></p>
<?php endif; ?>
<!-- pagination here -->
<?php   next_posts_link( \'Older Entries\', $my_videos->max_num_pages );
        previous_posts_link( \'Newer Entries\' );
        wp_reset_postdata(); 
?>
 在类别的第一页上一切都很好:分页可用,并显示“旧条目”。
但当点击链接时,我被重定向到/category/mycategoryname/page/2(mycategoryname是我的类别名称),但它显示了404错误;
任何帮助都将不胜感激。我觉得我错过了什么。
 
                    最合适的回答,由SO网友:ngearing 整理而成
                    由于这是模板的主循环,因此不应创建新循环,而应使用pre_get_posts. 这样,您可以确保所有额外的查询参数都将被考虑在内。
您将如何执行此操作的示例:
add_action( \'pre_get_posts\', \'wpse5477_pre_get_posts\' );
function wpse5477_pre_get_posts( $query )
{
    if ( ! $query->is_main_query() || $query->is_admin() )
        return false; 
    if ( $query->is_category() ) {
        $query->set( \'post_type\', \'video\' );
        $query->set( \'posts_per_page\', 6 );
    }
    return $query;
}
 此代码将进入您的
functions.php.
首先,我们检查这是否是主循环,而不是您的管理区域。pre_get_posts 可能影响管理。
然后,如果这是一个类别,我们修改$query.
然后返回$query.
有关更多信息,请查看此处:https://codex.wordpress.org/Plugin_API/Action_Reference/pre_get_posts