应网友的要求,奉上WordPress整站热门文章及分类热门文章的实现代码.其实这段代码也是Dream最开始也从网络搜索而来的,经过修改可以支持分类热门文章功能..实现原理是通过读取某篇文章的评论数来调用相关的文章,其实准确来说应该是”热评文章”.
应某位网友要求,另外附上该段代码下载:WordPress热门文章代码
/*
$termId:分类目录ID,为0时是检索所有分类目录
$posts_num:显示热评文章的数量
$days:检索多少天内的热评文章
*/
// 获得热评文章function simple_get_most_review($termId=0,$posts_num=10, $days=30)
{
global $wpdb;
//所有热评文章
if($termId==0){
$sql = “SELECT `ID` , `post_title` , `comment_count` FROM $wpdb->posts
WHERE `post_type` = ‘post’
AND TO_DAYS( now( ) ) – TO_DAYS( `post_date` ) < $days
AND (`wp_posts`.`post_status` = ‘publish’ OR `wp_posts`.`post_status` = ‘inherit’)
ORDER BY `comment_count` DESC LIMIT 0 , $posts_num “;}
//分类热评文章
else {
$sql=”SELECT `ID` , `post_title` , `comment_count` FROM `wp_posts`
INNER JOIN `wp_term_relationships` ON (`wp_posts`.`ID` = `wp_term_relationships`.`object_id`)
INNER JOIN `wp_term_taxonomy` ON (`wp_term_relationships`.`term_taxonomy_id` = `wp_term_taxonomy`.`term_taxonomy_id`)
WHERE 1=1
AND `wp_term_taxonomy`.`taxonomy` = ‘category’
AND `wp_term_taxonomy`.`term_id` = $termId
AND `wp_posts`.`post_type` = ‘post’
AND (`wp_posts`.`post_status` = ‘publish’ OR `wp_posts`.`post_status` = ‘inherit’)
GROUP BY `wp_posts`.`ID`
ORDER BY `comment_count` DESC LIMIT 0 , 10 “;}
$posts = $wpdb->get_results($sql);
$output = “”;
foreach ($posts as $post){
$overPost=$post->post_title;
$output .= “\n<li><a href= \””.get_permalink($post->ID).”\” rel=\”bookmark\” title=\””.$post->post_title.”\” >”.$overPost.”</a></li>”;
}
echo $output;
}
将上面代码加到你的functions.php文件里,然后在需要调用热门文章的地方函数就行了.
所有分类热评文章:
<?php if (function_exists(‘simple_get_most_review’)) {simple_get_most_review(0,10,31); } ?>
单个分类文章热评:
<?php if (function_exists(”simple_get_most_review’)) {simple_get_most_review($category->term_id,10,31); } ?>
2010-10-28 BUG修复(已更新到上面代码及下载链接)…………………………………….
-在查找文章的时候增加了过滤条件,只查询已发布的文章,这样就不会把一些预发布、草稿、回收站里的文章也加进来。
AND (`wp_posts`.`post_status` = ‘publish’ OR `wp_posts`.`post_status` = ‘inherit’)
if (!function_exists(‘simple_get_most_review’))
:
/*
$termId:分类目录ID,为0时是检索所有分类目录
$posts_num:显示热评文章的数量
$days:检索多少天内的热评文章
*/
// 获得热评文章
function simple_get_most_review($termId = 0, $posts_num = 10, $days = 30) {
global $wpdb;
//所有热评文章
if ($termId == 0) {
$sql = “SELECT `ID` , `post_title` , `comment_count` FROM `”.$wpdb->posts.”` as posts
WHERE `post_type` = ‘post’
AND TO_DAYS( now( ) ) – TO_DAYS( `post_date` ) posts.”` as posts
INNER JOIN `”.$wpdb->term_relationships.”` as term_relationships ON (`posts`.`ID` = `term_relationships`.`object_id`)
INNER JOIN `”.$wpdb->term_taxonomy.”` as term_taxonomy ON (`term_relationships`.`term_taxonomy_id` = `term_taxonomy`.`term_taxonomy_id`)
WHERE 1=1
AND `term_taxonomy`.`taxonomy` = ‘category’
AND `term_taxonomy`.`term_id` = $termId
AND `posts`.`post_type` = ‘post’
AND (`posts`.`post_status` = ‘publish’ OR `posts`.`post_status` = ‘inherit’)
GROUP BY `posts`.`ID`
ORDER BY `comment_count` DESC LIMIT 0 , 10 “;
}
$posts = $wpdb->get_results($sql);
$output = “”;
foreach ($posts as $post) {
$overPost = $post->post_title;
$output .= “\nID) . “\” rel=\”bookmark\” title=\”” . $post->post_title . “\” >” . $overPost . ““;
}
echo $output;
}
endif;
发一个正版的….他们的都是盗版货….
能不能 写好点再放出来啊!?
… 要是整理 也要认真点啊!!!
这不是坑爹吗???
555555555555555555555 看不懂
博主一个笔误,让多少彷徨的人儿瞬间就不知所措了。。
simple_get_most_viewed > simple_get_most_review
汗。。。这才发现。
多谢提醒啊~
即刻更新。。。。
你好,为什么我总是设置不成功呢?能发一下你完整的代码给我吗?我已经来这里几次了,可是折腾了几次都没有成功,留言希望能帮帮我。谢谢。给我发邮件可以吗?谢谢!
这就是完整代码啊。。。
我复制之后放在首页里面,没有内容呀。能否发一份你弄好完整的给我嘛?数据库不懂。。。dream可以吗?
这的确是完整的代码啊。
首先,把上面代码复制到functions.php里.
然后在你需要调用的地方插入(比如主页):
< ?php if (function_exists('simple_get_most_viewed')) {simple_get_most_review(0,10,31); } ?>
不知道怎么跟你说,我真的是设置了,就是出错了。而且你的代码的标点符号还是中文,我转化为英文之后,粘贴进去之后,添加首页内容,然后就出现了错误。
Parse error: syntax error, unexpected T_FUNCTION in D:\xampp\htdocs\wordpress\wp-content\themes\prowerV3.1\functions.php on line 59
这行是这样的:// 获得热评文章
function simple_get_most_review($termId=0,$posts_num=10, $days=30) {
怎么就不肯给我发个php的邮件代码呢?
我晕。。。SQL语句那里的中文标点不能改啊。
算了,我已经把一段代码写进PHP文件传上来了,你可以去下载下来看。
不知道是我的主题不标准还是什么?看http://blog.zwblog.info 侧栏的本月热门评论,什么都没显示出来,代码有需要什么要求吗?
新发布一篇文章,然后发表个评论试试
还是有点问题的,应该再加一个条件把博客刚生成的那个自动草稿给过滤掉。。
就是博客刚刚建好后,会有一个示例文章,即便把这篇文章删除后,根据你给的代码还是会出现在list里面。所以,应该在sql语句里再加一句判断条件。
刚试了,没发现你说的这种情况哦。
会哦,还是有问题的。。你可以看我刚弄的一个站。
http://www.wuyuezs.com/
边栏上的热点聚焦栏位。
有一个自动草稿,这篇文章其实就是我刚搭建博客时自动生成的那篇日志
还有最后一个叫测试的文章
其实这俩文章都已经被我在后台删除了,“自动草稿”那篇是彻底删除,“测试”那篇是放在了回收站。
而事实上根据你这篇日志提供的代码,这两片文章都被搜索出来啦。
我对wordpress后台数据库不是很熟,所以还是麻烦博主看一下哈。
另外,好像草稿状态的日志也被搜了出来。
估计还是sql语句有问题。
问题已经解决啦。加个判断条件就可以了。
AND `wp_posts`.`post_status` ‘trash’
AND `wp_posts`.`post_title` ‘自动草稿’
是主题的fuctions.php还是wp的啊
主题Function
不错,搞设计的,主题都显得漂亮。
不过你说的,定时发布文章,能够能过网址访问?
这个是在作者在线时,才能看到,实际别人是看不到的?
比如这个网址:www.yimeitu.com/hzz/295.html
你在3月1日前就没法访问。可以试下。
关于定时发布的问题,多谢纠正!
不过我发现前阵子我设置的定时发布的文章到时间后并没有发布,后台显示发布失败,郁闷!
不错 呵呵 支持 楼主
来支持下博主,加油更新,多多互动O(∩_∩)O~
多谢支持…你的站不错.
我的装了十几个插件,多了人容易迷糊
很好啊,比插件方便