• 注册
  • 个人说明:TA有点懒了,什么都没有写。
    关注 1 粉丝 0 喜欢 0 内容 256
    河南省·郑州市
    聊天 送礼

    新版界面开发进度

    14%
    其实就是啥也没写,只有想法,哈哈
    • 回帖总排行
    • 采纳总排行

    分享精彩给好友

    全部文章 关注:0 内容:1074

    WordPress查询函数WP_Query类的简单使用【转】

  • 查看作者
  • 打赏作者
  • 拉黑名单
    • WordPress查询函数多种多样,使用较多的是query_posts与WP_Query函数,官方建议使用WP_Query方法查询,因为query_posts方法或许会出现不可预料的问题。

      我们在WordPress仿站制作WordPress主题时经常需要对WordPress内容进行查询显示,不可避免的要使用WordPress查询函数,官方建议使用WP_Query函数,下面是关于WP_Query函数的简单使用方法,一般来说简单使用方法就足够我们使用了。

      WP_Query常用参数

      WP_Query的参数非常的多,多到翻页都要翻好几次,而我们常用的参数也就那十多个,所以我这里就不详细介绍了,下面是WordPress查询函数WP_Query常用参数:

      • 作者相关参数
        'author' => '1,2,3,' //(整数) - 作者ID [使用减号 (-) 排除某个作者 ID, 如: 'author' => '-1,-2,-3,']
        'author_name' => 'luetkemj', //(字符串) - 使用 'user_nicename' 用户昵称,(不是名称)
      • 分类相关参数

        'cat' => 5,//(整数) - 分类id
        'category_name' => 'staff', 'news', //(字符串) - 分类别名(不是名称)
        'category__and' => array( 2, 6 ), //(数组) - 分类id
        'category__in' => array( 2, 6 ), //(数组) - 分类id
        'category__not_in' => array( 2, 6 ), //(数组) - 分类 
      • 标签相关参数
        'tag' => 'cooking', //(字符串) - 标签别名
        'tag_id' => 5, //(整数) -标签id
        'tag__and' => array( 2, 6), //(数组) - 标签id
        'tag__in' => array( 2, 6), //(数组) - 标签id
        'tag__not_in' => array( 2, 6), //(数组) - 标签id
        'tag_slug__and' => array( 'red', 'blue'), //(数组) - 标签别名
        'tag_slug__in' => array( 'red', 'blue'), //(数组) - 标签别名 
      • 文章页面相关参数
        'p' => 1, //(整数) - 文章id
        'name' => 'hello-world', //(字符串) - 文章别名
        'page_id' => 1, //(整数) - 页面id
        'pagename' => 'sample-page', //(字符串) - 页面别名
        'pagename' => 'contact_us/canada', //(字符串) - 用斜杠‘/’分割的父页面别名/子页面别名来显示子页面
        'post_parent' => 1, //(整数) - 页面id,只返回子页面,只对有子页面的页面有效
        'post__in' => array(1,2,3), //(数组) - 需要显示的文章的id
        'post__not_in' => array(1,2,3), //(数组) - 需要排除的文章的id
        //注意:不能在同一个查询里同时使用 'post__in' 和 'post__not_in'
      • 文章类型与状态参数
        'post_type' => array( //(字符串/ 数组) - 文章类型,根据文章类型获取文章,默认为'post'
            'post', // - 文章
            'page', // - 页面
            'revision', // - 文章版本
            'attachment', // - 附件,默认 WP_Query 设置了发布状态为 'post_status'=>'published', 但是附件默认为 'post_status'=>'inherit',所以你需要设置状态为 'inherit' 或'any'.
            'my-post-type', // - 自定义文章类型 (例如:movies)
        ),
        'post_status' => array( //(字符串 / 数组) - 使用文章状态,根据文章状态获取文章,默认为 'publish'
            'publish', // - 已发布的文章或页面
            'pending', // -等待复审的文章
            'draft', // - 处于草稿状态的文章
            'auto-draft', // - 自动保存为草稿的文章
            'future', // - 定时发布的文章
            'private', // - 未登录用户不能查看的私有文章
            'inherit', // - 版本. 具体参考 get_children.
            'trash' // - 回收站中的文章 (2.9和以后的版本可用).
        ),
      • 排序参数

        /** * 排序 & 排序方式参数 - 对获取的文章进行排序 */
        'order' => 'DESC', //(字符串) - 设置 'order_by' 参数升序或降序排列. 默认为'DESC'.
        //Possible Values:
        //'ASC' - 升序排列,从小到大 (1, 2, 3; a, b, c).
        //'DESC' - 降序排列,从大到小 (3, 2, 1; c, b, a).
        'orderby' => 'date', //(字符串) - 排序依据. 默认为 'date'.
        //可用的参数有://
        //'none' - 不排序 (2.8和以后的版本可用)
        //'ID' - 根据ID排序,注意ID是大写的
        //'author' - 根据作者排序
        //'title' - 根据标题排序
        //'date' - 根据发表时间排序
        //'modified' - 根据最后修改时间排序
        //'parent' - 根据父页面排序
        //'rand' - 随机排序
        //'comment_count' - 根据评论数量排序 (2.9和以后的版本可用).
        //'menu_order' - 根据页面序号排序. 通常在页面中使用 (编辑页面时有一个页面序号的字段) 和附件 ( 插入 / 上传媒体相册对话框中的数字), 但是不能对文章类型 'menu_order' 使用数字值 (默认都为 0).
        //'meta_value' - 注意'meta_key=keyname' 必须也出现在查询中. 注意排序是按照字母表顺序进行的。(如:words),但是数字排序可能会有问题 (如:1, 3, 34, 4, 56, 6, etc, 而不是你希望的:1, 3, 4, 6, 34, 56)。
        //'meta_value_num' - 根据数字meta值排序 (2.8和以后的版本中可用). 同时需要注意'meta_key=keyname' 也要在查询中声明。这个值和上面说明的 'meta_value' 一样,只不过值允许使用数字排序。
        //'title menu_order' - 同时使用 menu_order 和 title 排序 更多信息请参考:http://wordpress.stackexchange.com/questions/2969/order-by-menu-order-and-title
        //'post__in' - 使用 post__in 数组中制定的 ID 顺序 (3.5以后的版本中可用).
      • 置顶相关
        'ignore_sticky_posts' => false, //(布尔值) - 是否忽略置顶文章,默认为假不忽略. 在返回文章的开头忽略/排除置顶文章,但是置顶文章还是会在自然查询中列出。

      WP_Query使用方法

      <?php 
      $args = array(
          // 用于查询的参数或者参数集合  参考上面的常用参数
      );
      // 自定义查询
      $query = new WP_Query( $args );
       
      // 判断查询的结果
      if ( $query->have_posts() ) {
       
          // 通过查询的结果,开始主循环
          while ( $query->have_posts() ) {
              $query->the_post();
       //这里就可以执行WordPress的内置函数,直接获取你需要的内容,比如文章标题,链接等等
          }
       
      }
       
      // 重置请求数据
      wp_reset_postdata();
      ?>

      WP_Query的参数与query_posts参数差不多一样的,大家可以参考下,这里由于篇幅问题就不多做解释了,以后如果有必要我们再详细讨论WordPress函数WP_Query查询函数参数的问题。

      你需要登录,才能进行发帖操作