不用插件实现一些常用功能是上上之选,之前网上盛传的不使用插件就能实现的五个常用功能一文中的相关日志函数,不是很完善,加到单篇日志后,下面的评论会变成最后一篇相关日志的评论,大概是loop出了问题。而这段代码不会出现这个弊病,并且在没有相关日志的情况下,会显示随机日志。这段代码是从一款主题中Copy出来的,原函数在没有相关日志时,显示最新文章,修改为显示随机日志。将这段代码加到single.php模板文件<?php comments_template(); ?>上面即可,可以删除相关日志插件了!
<?php
$backup = $post;
$tags = wp_get_post_tags($post->ID);
$tagIDs = array();
if ($tags) {
echo '<h4>相关日志</h4>';
echo '<ul>';
$tagcount = count($tags);
for ($i = 0; $i < $tagcount; $i++) {
$tagIDs[$i] = $tags[$i]->term_id;
}
$args=array(
'tag__in' => $tagIDs,
'post__not_in' => array($post->ID),
'showposts'=>4,<!-- 显示相关日志篇数 -->
'caller_get_posts'=>1
);
$my_query = new WP_Query($args);
if( $my_query->have_posts() ) {
while ($my_query->have_posts()) : $my_query->the_post(); ?>
<li><a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title(); ?>"><?php the_title(); ?></a></li>
<?php endwhile;
echo '</ul>';
} else { ?>
<ul>
<?php
query_posts(array('orderby' => 'rand', 'showposts' => 8));<!-- 显示随机日志篇数 -->
if (have_posts()) :
while (have_posts()) : the_post();?>
<li><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title(); ?>"><?php the_title(); ?></a></li>
<?php endwhile;endif; ?>
</ul>
<?php }
}
$post = $backup;
wp_reset_query();
?>
本站文章大部分为原创,用于个人学习记录,可能对您有所帮助,仅供参考!
日本 1F
去把插件换下来去
中国 B1
@ cyusyu 嗯,少用一个是一个
上海市 2F
可以把这个作为一个函数来调用…
北京市 3F
博主试用了吗?我试了不好用哦,开始提示cut_str没有定义,我改成mb_substr,还是不能出来文章~
中国 B1
@ 小骆驼商队 没有试用,而是正在使用 ,这段代码是抓取文章标签实现的
台湾省 4F
請問,我使用了但是卻連單篇文章都打不開,然後出現以下警語:
Parse error: syntax error, unexpected ‘>’ in 主題位址/single.php on line 46
不曉得是什麼原因呢?
中国 B1
@ Chloe 不同的主题函数代码有差异,比如一下些函数结束语句位置不同,可能就会造成一些错误,可以尝试将代码放到不同的位置试试
上海市 5F
刚刚试了,可以用,不过,要把里面的单引号换成英文半角的。和“ ”删掉。
上海市 B1
@ centicent 注释的“显示相关日志篇数 显示随机日志篇数”删掉。
浙江省杭州市 B2
@ centicent 对头,把这个注释删去,就正常了···
中国 B1
@ centicent 嗯,WP自动把英文标点转成中文标点了,现在改了程序没问题了
上海市浦东新区 6F
能不用插件就不用插件,这个方法拿去用啦
上海市 7F
不是很懂
浙江省杭州市 8F
确实啊,不是很懂,回去试试
河南省焦作市 9F
你是代码高手 请教你个问题,麻烦你能帮忙
如何在文章页面调用,实现分类相关文章
或者如何修改成按照 按tag相关文章
function get_posts_related_by_taxonomy($post_id,$taxonomy,$args=array()) {
$query = new WP_Query();
$do_not_duplicate[] = $post->ID;
$terms = wp_get_object_terms($post_id,$taxonomy);
if (count($terms)) {
// Assumes only one term for per post in this taxonomy
$post_ids = get_objects_in_term($terms[0]->term_id,$taxonomy);
$post = get_post($post_id);
$args = wp_parse_args($args,array(
‘post_type’ => $post->post_type, // The assumes the post types match
‘post__in’ => $post_ids,
‘post__not_in’ => array($post->ID),
‘taxonomy’ => $taxonomy,
‘term’ => $terms[0]->slug,
‘posts_per_page’ => 4,
)
);
$query = new WP_Query($args);
}
return $query;
}
中国 B1
@ wordpress主题书包 这篇文章的代码就是以标签判断相关文章
江西省赣州市 10F
还需要尝试.
上海市嘉定区 11F
继续开始折腾 呵呵
广东省珠海市 12F
这段代码放在侧边栏怎么没有效果
海南省海口市 13F
function get_posts_related_by_taxonomy($post_id,$taxonomy,$args=array()) 这个函数直接拿走了,太棒了,即可以实现标签相关,也可以实现分类相关,支持任何自定义分类法,如能写一个函数在自定义文章类型中判断其自定义类型的分类分类法taxonomy和其自定义文章类型的自定义标签分类法taxonomy的值就太好了。
来自外部的引用