WordPress函数文档check_comment()
判断一个评论是否符合有效 描述 译文 check_comment()判断评论是否传递WordPress Com…
判断一个评论是否符合有效
描述
译文
check_comment()判断评论是否传递WordPress Comment_Moderation 的内部检验。
原文
check_comment() checks whether a comment passes internal checks set by WordPress Comment_Moderation.
用法
<?php
check_comment( $author, $email, $url, $comment, $user_ip,
$user_agent, $comment_type );
?>
参数
$author
(string) (必填) Comment author name.
默认值: None
(string) (必填) Comment author email.
默认值: None
$url
(string) (必填) Comment author URL.
默认值: None
$comment
(string) (必填) Comment contents.
默认值: None
$user_ip
(string) (必填) Comment author IP address.
默认值: None
$user_agent
(string) (必填) Comment author user agent.
默认值: None
$comment_type
(string) (必填) Comment type (comment, trackback, or pingback).
默认值: None
返回值
(boolean)
This function returns a single boolean value of either true or false.
Returns false if in Comment_Moderation:
- The Administrator must approve all messages,
- The number of external links is too high, or
- Any banned word, name, URL, e-mail, or IP is found in any parameter except $comment_type.
Returns true if the Administrator does not have to approve all messages and:
- $comment_type parameter is a trackback or pingback and part of the blogroll, or
- $author and $email parameters have been approved previously.
Returns true in all other cases.
示例
Simple use case
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
/* ———————————-
* wordpress函数 kim收集
* ———————————- */
<?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
.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
|
/* ———————————-
* wordpress函数 kim收集
* ———————————- */
/**
* 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>
|
- 原文:http://codex.wordpress.org/Function_Reference/check_comment
本文收集自互联网,转载请注明来源。
如有侵权,请联系 wper_net@163.com 删除。
评论功能已经关闭!