修改主题文件前记得先备份,有问题再还原。
1、在主题函数文件functions.php里面添加下面的内容
/**
* Related posts
*
* @global object $post
* @param array $args
* @return
*/
function wcr_related_posts($args = array()) {
global $post;
// default args
$args = wp_parse_args($args, array(
'post_id' => !empty($post) ? $post->ID : '',
'taxonomy' => 'category',
'limit' => 3,
'post_type' => !empty($post) ? $post->post_type : 'post',
'orderby' => 'date',
'order' => 'DESC'
));
// check taxonomy
if (!taxonomy_exists($args['taxonomy'])) {
return;
}
// post taxonomies
$taxonomies = wp_get_post_terms($args['post_id'], $args['taxonomy'], array('fields' => 'ids'));
if (empty($taxonomies)) {
return;
}
// query
$related_posts = get_posts(array(
'post__not_in' => (array) $args['post_id'],
'post_type' => $args['post_type'],
'tax_query' => array(
array(
'taxonomy' => $args['taxonomy'],
'field' => 'term_id',
'terms' => $taxonomies
),
),
'posts_per_page' => $args['limit'],
'orderby' => $args['orderby'],
'order' => $args['order']
));
include( locate_template('related-posts-template.php', false, false) );
wp_reset_postdata();
}
2、新建一个related-posts-template.php文件,添加以下内容:
<?php if (!empty($related_posts)) { ?>
<div class="related-posts">
<h3 class="widget-title"><?php _e('相关文章', ''); ?></h3>
<ul class="related-posts-list">
<?php
foreach ($related_posts as $post) {
setup_postdata($post);
?>
<li>
<a class="title" href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>">
<?php if (has_post_thumbnail()) { ?>
<div class="thumb">
<?php echo get_the_post_thumbnail(null, 'medium', array('alt' => the_title_attribute(array('echo' => false)))); ?>
</div>
<?php } ?>
<h4><?php the_title(); ?></h4>
</a>
</li>
<?php } ?>
</ul>
<div class="clearfix"></div>
</div>
<?php
}
另一个版本:注意这里的 target=”_blank” 添加到了a标签中还添加了 rel=”noopener” 为安全起见
<!--相关文章代码-->
<?php if (!empty($related_posts)) { ?>
<div class="related-posts" style="margin: 20px 0;">
<h3 class="widget-title"><?php _e('相關文章', ''); ?></h3>
<ul class="related-posts-list" style="margin-top: 20px; padding: 0; list-style-type: none;">
<?php
foreach ($related_posts as $post) {
setup_postdata($post);
?>
<li style="margin-bottom: 10px;">
<!-- 注意这里的 target="_blank" 添加到了a标签中还添加了 rel="noopener" 为安全起见-->
<a class="title" href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>" target="_blank" rel="noopener" style="text-decoration: none;">
<?php if (has_post_thumbnail()) { ?>
<div class="thumb" style="margin-bottom: 10px;">
<?php echo get_the_post_thumbnail(null, 'medium', array('alt' => the_title_attribute(array('echo' => false)))); ?>
</div>
<?php } ?>
<h4 style="margin: 0 0 5px; padding: 0;"><?php the_title(); ?></h4>
</a>
</li>
<?php } ?>
</ul>
<div class="clearfix" style="clear: both;"></div>
</div>
<?php } ?>
调用方法
如果要调用相关文章代码,只需要在你主题合适的位置,通常是添加到single.php文件里面。
1、显示3个相关文章内容代码
<?php wcr_related_posts(); ?>
显示5条这样写,数字5是要显示的文章数量
<?php wcr_related_posts( array( 'limit' => 5 ) ); ?>
这种相关文章是根据分类来展示的。
2、根据文章TAG来展示相关文章
<?php wcr_related_posts(array( 'taxonomy' => 'post_tag', 'limit' => 6 )); ?>
数字6自行修改,为展示文章数量。
3、根据分类的热门评论文章展示
<?php wcr_related_posts(array( 'limit' => 6, 'orderby' => 'comment_count', 'order' => 'ASC' )); ?>
4、根据特定文章的TAG展示相关文章
<?php wcr_related_posts(array( 'limit' => 6, 'taxonomy' => 'post_tag', 'post_id' => 145 )); ?>
最后,你可能还需要自己修改下css样式让相关文章更好看。
还有其他一些方法:https://blog.naibabiji.com/skill/wordpress-xiang-guan-wen-zhang.html