当前位置: 首页 > 工具软件 > Wap-WordPress > 使用案例 >

wpcomments post.php,为wp-t-wap插件新增在线回复功能

伍玮
2023-12-01

由于本站使用了wp-t-wap插件作为用户手机访问时节省流量和适合手机浏览的界面,因此不断的优化了wp-t-wap插件的在线功能。之前《实现wordpress手机访问:基于wp-t-wap非插件》一文实现了wp-t-wap插件新增文章别名和文章形式的功能,(请在文章中下载已经优化了的非插件形式的wap.zip)今天,我们实现wp-t-wap的在线回复留言功能。

wp-t-wap具有在线管理的功能,但作为管理员,却只能对新的评论进行审核,对文章进行评论,却不能对特定的某条留言进行回复。因此,乌徒帮wordpress联盟结合wordpress本身特性,新增了wp-t-wap插件在回复留言上的功能。为了让朋友们对这一功能的深入理解,本文先将该功能实现的步骤进行阐述,然后对wp-t-wap留言回复机制的实现稍加说明。

1、新增前台可视化回复框和回复链接:

1)在index-wap2.php中的

<?php endif; ?>??

后添加以下这段代码,这样在浏览一篇文章时就有了留言功能

<?php if ('open' == $post->comment_status) : ?>

' />

???????

<?php do_action('comment_form', $post->ID); ?>

2)在comments.php中做如下修改

?<?php foreach ($comments as $comment) : ?>

之后添加上:

?<?php if($_GET['comment']&&$_GET['comment']!=$comment->comment_ID) continue; ?>

往下找,在

?<?php

??????? if ( my_get_option("wap_show_detail") != 'yes' ){

??comment_text_rss();

??????? }else{

??????????????? if ( strlen( get_comment_text() ) > 0 ) :

??????????????????????? comment_text();

??????????????? else :

??????????????????????? comment_excerpt();

??????????????? endif;

???????? }

?>

之后添加上:

?

回复

接着往下找,在下方添加这段:

?' />

3)在wap-comments-post.php中修改如下信息:

在$comment_content= trim($_POST['comment']);后面添加一行:

$comment_parent= trim($_POST['comment_parent']);

另外,用下面的代码覆盖代替原来的代码

$commentdata = compact('comment_post_ID', 'comment_author', 'comment_author_email', 'comment_author_url', 'comment_content','comment_parent', 'comment_type', 'user_ID');

4)修改functins.php:在

?echo " | comment_post_ID . "&c=" . $comment->comment_ID, 'delete-comment_' . $comment->comment_ID) . "" οnclick="return deleteSomething( 'comment-as-spam', $comment->comment_ID, '" . js_escape(sprintf(__("You are about to mark as spam this comment by '%s'.n'Cancel' to stop, 'OK' to mark as spam."), $comment->comment_author)). "', theCommentList );">" . __('Spam','wap') . " ";

后面添加一行:

?if ( 'unapproved'!= $comment_status) echo " | ".__('回复','wap')."";

通过上面四步,就实现了wp-t-wap插件的在线回复功能,http://www.utubon.com接下来我们来稍稍分析以下wp-t-wap回复机制。

在wp-t-wap中调用了很多wordpress系统原函数,所以很多wordpress系统本身的函数可以在wp-t-wap中使用,你可以用function_exists('function_test')来测试函数function_test()函数是否存在。而wp-t-wap回复也是调用了很多系统函数。

我们以管理员的身份在wap目录下登录,点击底部的管理评论,如果有未审核的评论,就会出现,并有功能选项“[删除 | 已审核 | 垃圾评论 ] ”,当我们做了上述4的修改后,这个选项就多了一项,变成“[删除 | 已审核 | 垃圾评论 | 回复 ] ”,多了回复功能。而且通过if ( 'unapproved'!= $comment_status)的判断后,没有通过审核的评论是不能回复的(这和wordpress的评论机制有关,没有审核的评论回复是没有评论传递的)。

完成上文1的步骤之后,即使访客也可以在文章页留言评论。但这里的评论只是为了增加访客留言的便捷性,而不是本文要解决的对评论的回复。

上文的2和3步这是本文最核心的部分,2(修改comments.php)解决了给每个留言添加“回复”选项链接,点击该链接后,会获取一个新的地址,即?p=$post_id&comment=$comment_id,程序用if($_GET['comment']&&$_GET['comment']!=$comment->comment_ID) continue;判断是否选择某一项评论单独回复,如果存在comment地址参数,就会得到一个只有该条评论和回复框的页面,而该页面中的form拥有了' />,即父评论的ID,这样,只要提交这个form就让该评论成为回复对应comment_id评论的评论了。

3(修改wap-comments-post.php)则是对提交的评论做了新的处理,原来是不处理comment_parent属性的,修改后,根据表单传递的comment_parent值修改这条评论的父评论,从而确定了该评论是回复哪条评论的评论。

为了让这些评论显得有层次感和交流性,建议再做如下修改:

在2(修改comments.php)中修改以下内容:

if ($p > 0) {

?$comments = $wpdb->get_results("SELECT comment_ID, comment_author, comment_author_email, comment_author_url, comment_date,?comment_content,comment_parent,comment_post_ID, $wpdb->posts.ID, $wpdb->posts.post_password FROM $wpdb->comments LEFT JOIN $wpdb->posts ON comment_post_ID = ID WHERE comment_post_ID = '$p' AND $wpdb->comments.comment_approved = '1' AND $wpdb->posts.post_status = 'publish' AND post_date < '".current_time('mysql')."' ORDER BY comment_date");

} else {

?$comments = $wpdb->get_results("SELECT comment_ID, comment_author, comment_author_email, comment_author_url, comment_date, comment_content,comment_parent,comment_post_ID, $wpdb->posts.ID, $wpdb->posts.post_password FROM $wpdb->comments LEFT JOIN $wpdb->posts ON comment_post_id = id WHERE $wpdb->posts.post_status = 'publish' AND $wpdb->comments.comment_approved = '1' AND post_date < '".current_time('mysql')."' ORDER BY comment_date DESC LIMIT 10");

即将两个$comments用上面的这些代码覆盖。

在<?php foreach ($comments as $comment) : ?>修改添加以下内容:

?<?php if($_GET['comment']&&$_GET['comment']!=$comment->comment_ID) continue;$comment_parent=$comment->comment_parent; ?>

?

?

# comment_ID() ?> if($comment_parent){echo "回复#";echo $comment_parent;}?> <?php _e("Author","wap") ?>: <?php comment_author_rss() ?> <?php _e("Time","wap") ?>: <?php comment_time(get_option('date_format').' ('.get_option('time_format').')'); ?>

通过上面这段代码的修改,你就可以看到在评论开头出现了“#12 回复#11”的字样,从而体现了这条评论属于一条对上面回复的评论。

好了wp-t-wap插件中实现评论在线回复的功能就讲到这里,如有不足之处,可以和frustigor交流。

 类似资料: