WordPress 查询自定义文章类型的文章和分类筛选

发布于 2019-04-17 13:55:11 字数 2949 浏览 3118 评论 0

WordPress 可以很方便的自定义文章类型,而且可以做到无限极分类,多分类多级别自定义筛选,提供了大量丰富的函数和开发文档供我们自由的定制,这篇文章将给大家介绍下如何查询自定义分类类型文章。

创建自定义文章类型

创建自定义文章类型,我们要用到 register_post_type 函数,可自定义很多参数,具体使用方法参见官方文档,这里做一个简单的示例。

register_post_type( 'reform',
  array(
  'hierarchical' => true,
    'labels' => array(
      'name' => __( '维保改造' ),
      'singular_name' => __( '维保改造' )
    ),
    'public' => true,
    'has_archive' => false,
    'supports' => array('title', 'editor', 'thumbnail', 'custom-fields'),
    'menu_icon' =>"dashicons-admin-tools"
  )
);

给自定义文章添加分类

文章类型添加完成一个,我们还可以给她添加一个或者多个分类,像有些文章的公共属性等。

register_taxonomy(
  'elevator-brand',
  'reform',
  array(
    'label' => '电梯品牌',
    'rewrite' => array( 'slug' => 'elevator-brand' ),
    'hierarchical' => true
  )
);

注意上的第二个参数 reform,就是我们添加的自定义文章类型,如果你写成 post ,那么就是给现在的默认文档类型再添加一种分类类型,在使用上非常方便。

如果要给文章添加多个分类类型,那么只需要复制上面的代码,将函数的第一个参数、label 以及 rewrite 参数修改一下就可以了。

添加完成一个记得一定要在后台设置-固定链接保存一下,不然分类的链接将是404。

查询自定义文章类型列表

接下来我们使用 new WP_Query() 查询自定义文章类型列表:

$args = array(
  'post_type' => 'reform',
  //获取的文章类型
  'tax_query' => array(
    array(
      'taxonomy' => 'product_cat',
      //这里是自定义的分类类型
      'field' => 'id',
      //获取自定义分类的方式是通过ID获取
      //也可以通过别名slug的方式获取
      'terms' => 82,
      //自定义的分类的ID,
      //如果上一行你选择的是通过slug(别名方式获取)
      //则这里填写的是自定义分类的别名
    ),
  ),
  'numberposts'=>6 //获取的文章数量
);
$theQuery = new WP_Query( $args );

循环遍历输出文章

<?php if ( $the_query->have_posts() ) : ?>
<?php while ( $the_query->have_posts() ) : 
$the_query->the_post(); ?>
<!--我自定义的文章格式-->
<!--值得一提的是这里循环会自动生成一个全局变量$post
注意是$post而不是$posts
通过这个变量你可以获取很多你想要的东西比如下面我获取当前文章的ID-->
<div class="people" id="<?php echo 'people'.$post->ID;?>">
  <ul id="people_info">
    <li><?php the_title()?></li>
  </ul>
</div> <!--文章循环结束-->
<?php endwhile; ?>
<?php else : ?>
<?php endif; ?>
<?php wp_reset_postdata();?>
<!--如果需要多次自定义查询最后把这句加上
只查询一次也加上.养成一个好的习惯。-->

如果您不涉及查询自定义分类的话可以采用以下的方法:

<?php
//courses为类型、8为篇数,rand为随机
$loop = new WP_Query( array(
  'post_type' => 'reform',
  'orderby'=>'rand',
  'posts_per_page' => 8
) );
while ( $loop->have_posts() ) :
$loop->the_post(); ?>
//这里中间部分正常输出传统标题函数、链接函数等我就不写了
<?php endwhile;
wp_reset_query();?>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

JSmiles

生命进入颠沛而奔忙的本质状态,并将以不断告别和相遇的陈旧方式继续下去。

0 文章
0 评论
84960 人气
更多

推荐作者

lorenzathorton8

文章 0 评论 0

Zero

文章 0 评论 0

萧瑟寒风

文章 0 评论 0

mylayout

文章 0 评论 0

tkewei

文章 0 评论 0

17818769742

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文