check_comment()
check_comment( string $author, string $email, string $u…
check_comment( string $author, string $email, string $url, string $comment, string $user_ip, string $user_agent, string $comment_type )
检查注释是否通过允许添加的内部检查。
Check whether a comment passes internal checks to be allowed to add.
目录锚点:#说明#参数#返回#源码#笔记
说明(Description)
如果在管理中设置了手动注释审核,则所有检查(无论其类型和白名单)都将失败,并且函数将返回false。
如果链接数超过管理中的数量,则检查失败。如果任何参数内容与单词黑名单匹配,则检查失败。
如果评论作者之前已被批准,则评论将自动白名单。
如果所有检查都通过,函数将返回true。
参数(Parameters)
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
$author | (string) | 必需 | 评论作者姓名。 |
(string) | 必需 | 评论作者电子邮件。 | |
$url | (string) | 必需 | 评论作者URL。 |
$comment | (string) | 必需 | 评论的内容。 |
$user_ip | (string) | 必需 | 评论作者IP地址。 |
$user_agent | (string) | 必需 | 评论作者用户代理。 |
$comment_type | (string) | 必需 | 注释类型,可以是用户提交的注释、trackback或pingback。 |
返回(Return)
(bool)如果所有检查都通过,则为true,否则为false。
源码(Source)
/** * 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( '/]*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; }
更新版本 | 源码位置 | 使用 | 被使用 |
---|---|---|---|
1.2.0 | wp-includes/comment.php:39 | 1 function | 8 |
笔记(Notes)
简单用例
类别:WordPress 函数手册、
本文收集自互联网,转载请注明来源。
如有侵权,请联系 wper_net@163.com 删除。
还没有任何评论,赶紧来占个楼吧!