check_comment()

判断一个评论是否符合有效

描述

check_comment()判断评论是否传递WordPress Comment_Moderation 的内部检验。

用法

<?php
   check_comment( $author, $email, $url, $comment, $user_ip,
         $user_agent, $comment_type );
?>

参数

$author

(string) (必填) 注释作者姓名。

默认值: None

$email

(string) (必填) 注释作者电子邮件。

默认值: None

$url

(string) (必填) 评论作者网址。

默认值: None

$comment

(string) (必填) Comment contents.

默认值: None

$user_ip

(string) (必填) 注释作者 IP 地址。

默认值: None

$user_agent

(string) (必填) 注释作者用户代理。

默认值: None

$comment_type

(string) (必填) 评论类型(评论、引用或 pingback)。

默认值: None

返回值

(boolean) 

此函数返回 true 或 false 的单个布尔值。

如果在Comment_Moderation中返回 false:

管理员必须批准所有邮件,外部链接数量过多,或任何禁止的单词、名称、URL、电子邮件或 IP 都可以在除 $comment_type 之外的任何参数中找到。

如果管理员不必批准所有邮件,则返回 true,并且:

$comment_type 参数是引用或 pingback 以及博客卷的一部分,或$author和$email参数之前已获得批准。

在所有其他情况下返回 true。

示例

Simple use case

/* ———————————-
* wordpress函数 XingkongWeb.com收集
* ———————————- */

<?php

$author = “John Charles Smith”;

$email = “[email protected]”;

$url = “http://example.com”;

$comment = “Excellent…”;

$user_ip = “12.34.56.78”;

$user_agent = “Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.79 Safari/535.11”;

$comment_type = “comment”;

if (check_comment( $author, $email, $url, $comment, $user_ip, $user_agent, $comment_type )) {

   echo “The Comment robot says: Thank you for your comment.”;

} else {

   echo “The Comment robot says: This comment is NOT valid!”;

}

?>

注意

使用到: $wpdb

使用到: get_option()

历史

添加于 版本: WordPress Version 1.2

源文件

check_comment() 函数的代码位于 wp-includes/comment.php.

/* ———————————-
* wordpress函数 星空站长网收集
* ———————————- */
/**
* Check whether a comment passes internal checks to be allowed to add.
*
* If manual comment moderation is set in the administration, then all checks,
* regardless of their type and whitelist, will fail and the function will
* return false.
*
* If the number of links exceeds the amount in the administration, then the
* check fails. If any of the parameter contents match the blacklist of words,
* then the check fails.
*
* If the comment author was approved before, then the comment is automatically
* whitelisted.
*
* If all checks pass, the function will return true.
*
* @since 1.2.0
*
* @global wpdb $wpdb WordPress database abstraction object.
*
* @param string $author       Comment author name.
* @param string $email        Comment author email.
* @param string $url          Comment author URL.
* @param string $comment      Content of the comment.
* @param string $user_ip      Comment author IP address.
* @param string $user_agent   Comment author User-Agent.
* @param string $comment_type Comment type, either user-submitted comment,
*                        trackback, or pingback.
* @return bool If all checks pass, true, otherwise false.
*/

function check_comment($author, $email, $url, $comment, $user_ip, $user_agent, $comment_type) {

global $wpdb;

// If manual moderation is enabled, skip all checks and return false.

if ( 1 == get_option(‘comment_moderation’) )

return false;

/** This filter is documented in wp-includes/comment-template.php */

$comment = apply_filters( ‘comment_text’, $comment );

// Check for the number of external links if a max allowed number is set.

if ( $max_links = get_option( ‘comment_max_links’ ) ) {

$num_links = preg_match_all( ‘/<a [^=””>]*href/i’, $comment, $out );

/**

* Filter the maximum number of links allowed in a comment.
*
* @since 3.0.0
*
* @param int    $num_links The number of links allowed.
* @param string $url       Comment author’s URL. Included in allowed links total.
*/

$num_links = apply_filters( ‘comment_max_links_url’, $num_links, $url );

/*

* If the number of links in the comment exceeds the allowed amount,
* fail the check by returning false.
*/

if ( $num_links >= $max_links )

return false;

}

$mod_keys = trim(get_option(‘moderation_keys’));

// If moderation ‘keys’ (keywords) are set, process them.

if ( !empty($mod_keys) ) {

$words = explode(“

“, $mod_keys );

foreach ( (array) $words as $word) {

$word = trim($word);

// Skip empty lines.

if ( empty($word) )

continue;

/*

* Do some escaping magic so that ‘#’ (number of) characters in the spam
* words don’t break things:
*/

$word = preg_quote($word, ‘#’);

/*

* Check the comment fields for moderation keywords. If any are found,
* fail the check for the given field by returning false.
*/

$pattern = “#$word#i”;

if ( preg_match($pattern, $author) ) return false;

if ( preg_match($pattern, $email) ) return false;

if ( preg_match($pattern, $url) ) return false;

if ( preg_match($pattern, $comment) ) return false;

if ( preg_match($pattern, $user_ip) ) return false;

if ( preg_match($pattern, $user_agent) ) return false;

}

}

/*

* Check if the option to approve comments by previously-approved authors is enabled.
*
* If it is enabled, check whether the comment author has a previously-approved comment,
* as well as whether there are any moderation keywords (if set) present in the author
* email address. If both checks pass, return true. Otherwise, return false.
*/

if ( 1 == get_option(‘comment_whitelist’)) {

if ( ‘trackback’ != $comment_type && ‘pingback’ != $comment_type && $author != ” && $email != ” ) {

// expected_slashed ($author, $email)

$ok_to_comment = $wpdb->get_var(“SELECT comment_approved FROM $wpdb->comments WHERE comment_author = ‘$author’ AND comment_author_email = ‘$email’ and comment_approved = ‘1’ LIMIT 1”);

if ( ( 1 == $ok_to_comment ) &&

( empty($mod_keys) || false === strpos( $email, $mod_keys) ) )

return true;

else

return false;

} else {

return false;

}

}

return true;

}

</a>
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索