WordPress 获取自定义文章类型的相关文章

每到春天,红得如火的木棉花,粉得如霞的芍药花,白得如玉的月季花竞相开放。它们有的花蕾满枝,有的含苞初绽,有的昂首怒放。一阵沁人心肺的花香引来了许许多多的小蜜蜂,嗡嗡嗡地边歌边舞。

在 WordPress 的文章页面,一般我们都会推荐一些相关文章,对于WordPress 自带的文章类型“post”,可以根据参考下面的文章来实现:

WordPress添加相关文章功能(标题/缩略图样式)

WordPress相关文章插件:Yet Another Related Posts Plugin

WordPress相关文章插件:WordPress Related Posts

但如果是自定义文章类型(Custom Post type),要调用相关文章就需要修改查询参数了。如果你还不知道什么是自定义文章类型,请查看:WordPress 自定义文章类型 介绍及实例解说

下面分享两种情况下的调用方法,默认都是添加到主题的 single.php 或 single-custom_post_type.php 文件。

默认分类的相关文章

所谓“默认分类”是指自带的文章类型post的分类“category”。也就是在注册自定义文章类型时,你注册的分类法就是 category 的时候。以下是代码样例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<?php
/**
 * WordPress 获取自定义文章类型的相关文章(默认分类)
 * https://www.wpdaxue.com/related-custom-post-type-taxonomy.html
 */
// 获取自定义文章类型的分类项目
$custom_taxterms = wp_get_object_terms( $post->ID,'category', array('fields' => 'ids') );
// 参数
$args = array(
'post_type' => 'YOUR_CUSTOM_POST_TYPE',// 文章类型
'post_status' => 'publish',
'posts_per_page' => 3, // 文章数量
'orderby' => 'rand', // 随机排序
'tax_query' => array(
    array(
        'taxonomy' => 'category', // 分类法
        'field' => 'id',
        'terms' => $custom_taxterms
    )
),
'post__not_in' => array ($post->ID), // 排除当前文章
);
$related_items = new WP_Query( $args );
// 查询循环
if ($related_items->have_posts()) :
    echo '<h3 class="related-posts-title">Related Posts</h3><ul>';
    while ( $related_items->have_posts() ) : $related_items->the_post();
?>
        <li><a rel="nofollow noopener noreferrer" href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a></li>
<?php
    endwhile;
    echo '</ul>';
endif;
// 重置文章数据
wp_reset_postdata();
?>

<?php /** * WordPress 获取自定义文章类型的相关文章(默认分类) * https://www.wpdaxue.com/related-custom-post-type-taxonomy.html */ // 获取自定义文章类型的分类项目 $custom_taxterms = wp_get_object_terms( $post->ID,'category', array('fields' => 'ids') ); // 参数 $args = array( 'post_type' => 'YOUR_CUSTOM_POST_TYPE',// 文章类型 'post_status' => 'publish', 'posts_per_page' => 3, // 文章数量 'orderby' => 'rand', // 随机排序 'tax_query' => array( array( 'taxonomy' => 'category', // 分类法 'field' => 'id', 'terms' => $custom_taxterms ) ), 'post__not_in' => array ($post->ID), // 排除当前文章 ); $related_items = new WP_Query( $args ); // 查询循环 if ($related_items->have_posts()) : echo '<h3 class="related-posts-title">Related Posts</h3><ul>'; while ( $related_items->have_posts() ) : $related_items->the_post(); ?> <li><a rel="nofollow noopener noreferrer" href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a></li> <?php endwhile; echo '</ul>'; endif; // 重置文章数据 wp_reset_postdata(); ?>

你需要根据自己的需要,修改参数:

11行:'YOUR_CUSTOM_POST_TYPE' 你需要修改为你的自定义文章类型

12行: 修改文章数量

还可以修改 26、29、32行的代码来输出自己想要的内容,比如添加缩略图,以及更多文章meta信息等。

自定义分类的相关文章

所谓“自定义分类”是指非默认的 category 这个分类法。以下是代码样例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<?php
/**
 * WordPress 获取自定义文章类型的相关文章(自定义分类)
 * https://www.wpdaxue.com/related-custom-post-type-taxonomy.html
 */
// 获取自定义文章类型的分类项目
$custom_taxterms = wp_get_object_terms( $post->ID,'your_taxonomy', array('fields' => 'ids') );
// 参数
$args = array(
'post_type' => 'YOUR_CUSTOM_POST_TYPE',// 文章类型
'post_status' => 'publish',
'posts_per_page' => 3, // 文章数量
'orderby' => 'rand', // 随机排序
'tax_query' => array(
    array(
        'taxonomy' => 'your_taxonomy', // 分类法
        'field' => 'id',
        'terms' => $custom_taxterms
    )
),
'post__not_in' => array ($post->ID), // 排除当前文章
);
$related_items = new WP_Query( $args );
// 查询循环
if ($related_items->have_posts()) :
    echo '<h3 class="related-posts-title">Related Posts</h3><ul>';
    while ( $related_items->have_posts() ) : $related_items->the_post();
?>
        <li><a rel="nofollow noopener noreferrer" href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a></li>
<?php
    endwhile;
    echo '</ul>';
endif;
// 重置文章数据
wp_reset_postdata();
?>

<?php /** * WordPress 获取自定义文章类型的相关文章(自定义分类) * https://www.wpdaxue.com/related-custom-post-type-taxonomy.html */ // 获取自定义文章类型的分类项目 $custom_taxterms = wp_get_object_terms( $post->ID,'your_taxonomy', array('fields' => 'ids') ); // 参数 $args = array( 'post_type' => 'YOUR_CUSTOM_POST_TYPE',// 文章类型 'post_status' => 'publish', 'posts_per_page' => 3, // 文章数量 'orderby' => 'rand', // 随机排序 'tax_query' => array( array( 'taxonomy' => 'your_taxonomy', // 分类法 'field' => 'id', 'terms' => $custom_taxterms ) ), 'post__not_in' => array ($post->ID), // 排除当前文章 ); $related_items = new WP_Query( $args ); // 查询循环 if ($related_items->have_posts()) : echo '<h3 class="related-posts-title">Related Posts</h3><ul>'; while ( $related_items->have_posts() ) : $related_items->the_post(); ?> <li><a rel="nofollow noopener noreferrer" href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a></li> <?php endwhile; echo '</ul>'; endif; // 重置文章数据 wp_reset_postdata(); ?>

你需要根据自己的实际,修改如下参数:

第 7 行和第 16 行:修改 your_taxonomy 为你的自定义分类法

11行:'YOUR_CUSTOM_POST_TYPE' 你需要修改为你的自定义文章类型

12行: 修改文章数量

还可以修改 26、29、32行的代码来输出自己想要的内容,比如添加缩略图,以及更多文章meta信息等。

参考资料:

  • http://isabelcastillo.com/related-custom-post-type-taxonomy
  • http://isabelcastillo.com/get-related-posts-custom-taxonomy-category

本文WordPress 获取自定义文章类型的相关文章到此结束。无形的爱、无处不在。那就是亲情。小编再次感谢大家对我们的支持!

您可能有感兴趣的文章
WordPress站点Gravatar头像前后台不显示的如何解决办法

WordPress做公司官网好吗?会不会显得档次很低?

WordPress主题需要支持https吗?WordPress站点如何如何实现https?

WordPress站点的页面/标签/分类URL地址如何添加.html?

WordPress站点更换了域名后数据库应该如何操作替换新旧域名?