刚接触wordpress,作为一名新手,在用wordpress做博客的时候回遇到各种问题,有时候从网上搜索一大推的答案就无济于事,大同小异,都是同样的文章。

关于本文章的问题,同样也是,始终没有找到一个完整的方法,最后是经过不同的改进,查找,发现的一些细节综合起来,才知道最终解决方案。,有时候也很无助,也很无奈。。随意特此记录一下在用wordpress自己遇到的问题和自己最终解决方法。。

一、首先描述一下本人遇到问题的场景。

    这个问题是自己新建一个主题,后新建了一个文章列表模板的。然后根据此法<?php if (have_posts()) : while (have_posts()) : the_post(); ?> 

<?php endwhile; ?>能正确的循环出当前分类目录下的所有文章,默认是按最新时间排序。这个没有什么问题。。然后不管是使用模板的分页代码还是插件的分页,发现无法显示出分页来。

   对于这个问题,然后去网上搜索答案,搜寻,wordpress分页无法显示,wordpress分页失效等等,发现有很多的文章,比如关于‘WordPress 解决query_posts使分页失效的方法’、‘WordPress自定义页面分页导航不显示’等文章,几乎都是相同的答案,都是说使用如下的代码就能解决。

$limit = get_option('posts_per_page');
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
query_posts('&showposts=' . $limit=10 . '&paged=' . $paged);
$wp_query->is_archive = true; $wp_query->is_home = false;

好吧,哥也不怎么懂php代码,那就复制去用吧,欧耶,发现分页的代码终于肯显示出来的,甚是happy,但是一点第二页,惊呆了,404。那行,继续找答案呗,搜索“wordpress分页出现404,翻页出现404”等等的问题答案,然后又是千篇一律的文章答案,都是说把wp-includes下的classes.php里面的handle_404方法修改成一段代码然后删除&& !is_paged() ,那就照办吧,发现不对啊(可能他们写的文章是比较久了啊,版本不一样,代码不同了把,自己用的4.52),最后发现其实只需要注释if(!is_paged())这个判断就可以了(判断里面的代码保留),可以点第二页了,正确了。

本来以为到了这里就可以放心睡大觉了,突然又发现了一个问题,不能正确循环出当前分类目录下的所有文章,而且所有分类目录的文章都弄出来了。所有分类目录都是一模一样的。啊,悲剧了。。

没事的,有百度,怕啥啊,继续搜索呗,那么又找到了一个方法,说很好使,如下代码,

$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$args = array(
    // 控制只显示10篇文章,如果将10改成-1将显示所有文章
    'showposts' => 10,
    'paged' => $paged
);
query_posts($args);
把这段代码放在循环的开头,也不能实现,各种答案都试过,都一样。。

最后没有办法,wordpressQQ各种技术群,问问吧,最后都无语。。那还得靠自己吧,然后想着改变一下能获取当前分类目录的方法,那么就可以就各种搜索吧,功夫不负有心人,还好改一下终于有方法了。

二、正确的解决方法

$args = array(
    // query_posts参数
    'orderby'   => date   //按时间排序  
);
// 下面这一行代码是必须的,不然不能分页
$arms = array_merge($args, $wp_query->query);
query_posts($arms);
但发现不太懂这代码,其实搜索得知query_posts参数的orderby值,可以根据不同值对列表文章进行排序,比如按最新时间,按访问量,作者(orderby=>author)等等。

随后终于成功实现正确分页,正确获取数据了。话说本文写得比较随性的,不专业,当它是自己遇到问题的一篇小笔记吧。