Web 上有许多功能都在请求 AJAX 化。无论是在民意调查中投票还是简单地评论博客文章,真的没有理由为如此简单的事情重新加载整个页面。这个博客多年来一直在 WordPress 中使用 AJAX 评论,但直到最近我才找到处理这些评论的最优化方式。以下是处理 AJAX 评论系统的 WordPress PHP 端的方法。
PHP
在主题的 function.php 文件中添加以下函数:
// Method to handle comment submission function ajaxComment($comment_ID, $comment_status) { // If it's an AJAX-submitted comment if(isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest'){ // Get the comment data $comment = get_comment($comment_ID); // Allow the email to the author to be sent wp_notify_postauthor($comment_ID, $comment->comment_type); // Get the comment HTML from my custom comment HTML function $commentContent = getCommentHTML($comment); // Kill the script, returning the comment HTML die($commentContent); } }
上面的函数接收新的评论 ID(此时评论已经发布到数据库)和 comment_status,如果你想知道的话。如果评论是通过 AJAX 提交的,则检索评论元数据,调用 wp_notify_postauthor
向作者发送有关新评论的电子邮件通知,最后一步是输出格式化的评论 HTML,这是我的formatComment
函数完成。最后一步是添加一个 WordPress 动作来触发上面的函数:
// Send all comment submissions through my "ajaxComment" method add_action('comment_post', 'ajaxComment', 20, 2);
现在所有新的 AJAX 提交的评论都通过 ajaxComment
方法进行过滤,只输出特定的评论 HTML,允许您将评论内容插入到客户端的相关父 OL/UL 元素中.
过去,我允许加载整个页面,那是……很慢。非常慢。上述方法允许简单的 PHP/AJAX 评论处理,允许其他相关的评论处理方法(包括通过电子邮件发送帖子的作者),并立即输出评论 HTML。谁想到会这么简单?!