Wordpress 自定义文章类型的显示以及分页问题

前提:自己开发了一套主题,并且全局使用了自定义了文章类型。

首页调用了四个分类来显示,并且每个分类显示8个文章,使用查询方式如下:

$args = array('post_type'=>'video', 'cat'=> 5);
$loop = new WP_Query($args);

为了脱离后台阅读中的文章显示数量,在 function 中加入对首页文章查询数量条件的显示

其他分类和标签依然使用后台阅读设置的文章显示数量

//自定义首页查询显示文章数量及类型
add_action( 'pre_get_posts', 'add_my_post_types_to_query' );
function add_my_post_types_to_query( $query ) {

    //首页文章显示数量
    if( is_home() && $query->is_main_query()) {
        $query->set('posts_per_page',8);//首页每页显示8篇文章
    }

    //定义分类页面的显示文章类型
    if ( is_category() || is_tag() || is_search() && $query->is_main_query()) {
        $query->set('post_type', array('video'));
    }

    return $query;
}

这样有一个好处,你在分类和标签页面等,就不必使用自定义 WP_Query 查询语句了,直接使用 have_post() 即可

碰到一个一个问题,关于分页的,在这里描述一下,在没有按照上面所作之前,分类页面采用 WP_Query 自定义文章查询类型以及显示文章数量来进行文章输出,然后安装使用了 WP-PageNavi 分页插件,并且在分页的位置添加了 wp_pagenavi() 方法,

然后就碰见一个很意外的问题,刚开始是没有分页数据,后来捣鼓出来了分页,但是点进去是 page/2 出现404报错,昨天晚上开始发现此问题,各种一顿乱搜没有找到解决方案,然后早上醒来又开始搜此问题,使用百度不行,就是用google,但是搜索结果大都类似,并没有解决方案,然后早上跑步回宿舍洗澡时,顿时想到了问题,主要有两点,第一是使用 WP_Query 自定义查询的问题好像分页不好使,第二突然想到应该使用 pre_get_posts 这个钩子来进行查询语句进行对查询数量,文章类型等控制,这样就直接可以在分类和标签页面直接使用 have_post() 来循环数据了,然后早上进行了测试,分页果然正常!

猜你喜欢

转载自blog.csdn.net/myarche/article/details/89370591