这个代码只能用于模板?

趣站酷软的作者Chada翻译了一篇BlogOhBlog的文章——《10个WordPress主题Hack技巧》,其中有一个技巧是关于如何“展示评论数最多的文章”的。

根据这个技巧,精博昨天制作了一篇《有史以来评论最多的10篇文章》,页面效果是很不错的,具体操作如下:

1. 在Header.php的最后添加以下代码:

<?php function most_popular_posts($no_posts = 10, $before = '<ul><li>', $after = '</li></ul>', $show_pass_post = false, $duration='') {
global $wpdb;
$request = "SELECT ID, post_title, COUNT($wpdb->comments.comment_post_ID) AS 'comment_count' FROM $wpdb->posts, $wpdb->comments";
$request .= " WHERE comment_approved = '1' AND $wpdb->posts.ID=$wpdb->comments.comment_post_ID AND post_status = 'publish'";
if(!$show_pass_post) $request .= " AND post_password =''";
if($duration !="") { $request .= " AND DATE_SUB(CURDATE(),INTERVAL ".$duration." DAY) < post_date ";
}
$request .= " GROUP BY $wpdb->comments.comment_post_ID ORDER BY comment_count DESC LIMIT $no_posts";
$posts = $wpdb->get_results($request);
$output = '';
if ($posts) {
foreach ($posts as $post) {
$post_title = stripslashes($post->post_title);
$comment_count = $post->comment_count;
$permalink = get_permalink($post->ID);
$output .= $before . '<a href="' . $permalink . '" title="' . $post_title.'">' . $post_title . '</a> (' . $comment_count.')' . $after;
}
} else {
$output .= $before . "None found" . $after;
}
echo $output;
} ?>

备注:

原代码上是没有<ul>这个标签的,我之所以加上这个标签,是因为如果不加的话,所展示的“评论数最多的文章”位置在FF浏览器下会有点偏左,原因不明。

2. 然后在文章(post)里面添加以下代码:

<?php most_popular_posts(); ?>

备注:

1. 我的WordPress是安装了一个叫做Exec-PHP的插件,所以才能够直接在文章里面插入PHP代码。

2. Exec-PHP插件我是用来整合其他博客的RSS Feed用的,一直都没有问题。

以上两个步骤弄完了,发表文章,在FireFox浏览器和IE7浏览器下查看页面显示都正常,但是在IE7浏览器下无法打开RSS Feed页面(即http://jingpin.org/feed/), 并且出现下面的错误警告:

CDATA 节未关闭。
行: 31 字符: 25

<description><![CDATA[<p>以下是精博有史以来评论最多的10篇文章:</p>

这个问题还请教了WordPress爱好者的成员,其中版主JAY给了如下的解释:

1. 可以考虑用iframe或者AJAX的方法来代替PHP代码。

2. 可能是exec-php插件还不完善。

可惜我不懂iframe或者AJAX的方法,Exec-php我用的是最新的版本4.8,还没有升级,所以为了避免读者点击精博的RSS图标出现错误页面,我只好把代码取消了。如果您能够对BlogOhBlog的代码进行修改,介绍一下iframe或者AJAX的方法,又或者修改exec-php插件,希望能够立文和大家分享——或者有偿分享。

备注:

1. <?php most_popular_posts(); ?>代码如果插入于侧边栏或者其他模板(Template),那是不存在RSS Feed页面打不开或者内容偏左这些问题的。

2. 这个代码是否只能用于模板(Template)呢?

相关博文:

  1. WordPress 主题之评论模板
  2. WordPress 主题之搜索模板和静态页面模板
  3. WordPress 主题 Index 模板
  4. 如何创建 WordPress 主题
  5. 不用插件也可以分页

此文发表于 博客技术 以及标签 , , , ; 收藏永久链接. 发表评论或者留下引用: 引用链接.
Post comment as twitter logo facebook logo
Sort: Newest | Oldest

@Estyle,谢谢关注。精博今后可能要多写点娱乐性的文章,技术类的东西我一直都是自己试过之后才发表的,很耗时间,并且看来也不怎么受欢迎。

看过了,可惜俺对WP不熟,要不然应该可以帮上忙,Sorry。