到底是该选择WordPress插件还是在functions.php
中添加代码?相对来说如果是需求的功能通过插件是可以满足的,那么使用插件的那是无可厚非的。另外如果您所需要的功能不可用插件,同时通过添加代码段又是非常简单的情况,那么就可以选择到功能文件中添加代码段的方式了。今天就来看一看怎样在functions.php
中添加一段获取相关文章的代码。
将下面的代码插入functions.php
中,具体操作如下:
获取相关文章的策略: 手动指定 > 标签 >分类 > 随机
//相关文章
function add_related_posts($content){
return $content . wp_related_posts();
}
add_filter ('the_content', 'add_related_posts'); //hook
function wp_related_posts(){
global $post;
$num = 5;//文章数量
$counter = 1;
$exclude_id = get_post_meta($post->ID,'related',true);//获取手动置顶的相关文章
if ($exclude_id){
$args = array(
'post_status' => 'publish',
'post_type' => array('post'),
'post__in' => explode(',', $exclude_id),
'posts_per_page' => $num
);
$posts = get_posts($args);
foreach($posts as $sb){
$output .= '<li><a href="' . get_permalink($sb->ID) . '">' . $sb->post_title . '</a></li>';//可自定义样式
$i++;
}
}
if( $i < $num){//自定义文章数不足后通过分类和标签处理
$tagsid = array();
$catid = array();
$thisid[] = $post->ID;
$posttags = get_the_tags();
$catids = get_the_category();
if(!empty($posttags)) {
foreach($posttags as $tag) {
$tagsid[] = $tag->term_id;
}
}
if(!empty($catids)) {
foreach($catids as $cat) {
$catid[] = $cat->term_id;
}
}
$args = array(
'post_type' => 'post',
'post__not_in' => $thisid,
'ignore_sticky_posts' => 1,
'posts_per_page' => ($num - $i),
'tax_query' => array(
'relation' => 'OR',//改成AND则必须是同标签同分类下
array(
'taxonomy' => 'post_tag',
'field' => 'term_id',
'terms' => $tagsid,
),
array(
'taxonomy' => 'category',
'field' => 'term_id',
'terms' => $catid,
),
),
);
$rsp = get_posts($args );
foreach($rsp as $sb){
$output .= '<li><a href="' . get_permalink($sb->ID) . '">' . $sb->post_title . '</a></li>';//可自定义样式
$i++;
}
}
$final = '<h3>相关文章</h3><ul>' . $output . '</ul>';
return $final;
}
如需加入自定义相关文章,只需新建自定义栏目,加入文章id即可,多篇文章用英文 , 隔开
如果想自定位置,并调整样式,则去掉the_content
的钩子,然后手动调用wp_related_posts
函数。
以上方式虽然操作比较简单,但最终还是针对网站需求和操作者有两个要求,一是对获取相关文章的需求比较重要,而是作者以前在functions.php中经常也会添加一些代码,并且对代码的功能比较熟悉。
评论前必须登录!
注册