wp_new_comment()添加一个新的评论到数据库中
wp_new_comment()添加一个新的评论到数据库中
目录
描述
译文
在数据库中添加新评论。
将新评论进行过滤,确保在数据库中插入新评论前,字段都已经被审查并处于可用状态。用评论编号、以及评论是否被WordPress许可调用’comment_post’动作。在函数进行操作前,还可以用’preprocess_comment’过滤器处理评论数据。
原文
Adds a new comment to the database.
Filters new comment to ensure that the fields are sanitized and valid before inserting comment into database. Calls ‘comment_post’ action with comment ID and whether comment is approved by WordPress. Also has ‘preprocess_comment’ filter for processing the comment data before the function handles it.
用法
<?php wp_new_comment( $commentdata ) ?>
参数
返回值
示例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
/* ———————————-
* wordpress之魂 © http://wphun.com
* ———————————- */
global $post, $current_user; //for this example only 🙂
$commentdata = array(
‘comment_post_ID’ => $post->ID, // to which post the comment will show up
‘comment_author’ => ‘Another Someone’, //fixed value – can be dynamic
‘comment_author_email’ => ‘someone@example.com’, //fixed value – can be dynamic
‘comment_author_url’ => ‘http://example.com’, //fixed value – can be dynamic
‘comment_content’ => ‘Comment messsage…’, //fixed value – can be dynamic
‘comment_type’ => ”, //empty for regular comments, ‘pingback’ for pingbacks, ‘trackback’ for trackbacks
‘comment_parent’ => 0, //0 if it’s not a reply to another comment; if it’s a reply, mention the parent comment ID here
‘user_id’ => $current_user->ID, //passing current user ID or any predefined as per the demand
);
//Insert new comment and get the comment ID
$comment_id = wp_new_comment( $commentdata );
|
注意
- 使用到: apply_filters() 调用 ‘preprocess_comment’ hook on $commentdata parameter array before processing
- 使用到: do_action() 调用 ‘comment_post’ hook on $comment_ID returned from adding the comment and if the comment was approved.
- 使用到: wp_filter_comment() Used to 过滤器 comment before adding comment.
- 使用到: wp_allow_comment() checks to see if comment is approved.
- 使用到: wp_insert_comment() Does the actual comment insertion to the database.
- 使用到: wp_notify_moderator()
- 使用到: wp_notify_postauthor()
- 使用到: wp_get_comment_status()
历史
添加于 版本: 1.5.0
源文件
wp_new_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
|
/* ———————————-
* wordpress之魂 © http://wphun.com
* ———————————- */
/**
* Adds a new comment to the database.
*
* Filters new comment to ensure that the fields are sanitized and valid before
* inserting comment into database. Calls ‘comment_post’ action with comment ID
* and whether comment is approved by WordPress. Also has ‘preprocess_comment’
* filter for processing the comment data before the function handles it.
*
* We use REMOTE_ADDR here directly. If you are behind a proxy, you should ensure
* that it is properly set, such as in wp-config.php, for your environment.
* See {@link https://core.trac.wordpress.org/ticket/9235}
*
* @since 1.5.0
* @since 4.3.0 ‘comment_agent’ and ‘comment_author_IP’ can be set via `$commentdata`.
*
* @see wp_insert_comment()
*
* @global wpdb $wpdb
*
* @param array $commentdata Contains information on the comment. See wp_insert_comment()
* for information on accepted arguments.
* @return int|false The ID of the comment on success, false on failure.
*/
function wp_new_comment( $commentdata ) {
global $wpdb;
if ( isset( $commentdata[‘user_ID’] ) ) {
$commentdata[‘user_id’] = $commentdata[‘user_ID’] = (int) $commentdata[‘user_ID’];
}
$prefiltered_user_id = ( isset( $commentdata[‘user_id’] ) ) ? (int) $commentdata[‘user_id’] : 0;
/**
* Filter a comment’s data before it is sanitized and inserted into the database.
*
* @since 1.5.0
*
* @param array $commentdata Comment data.
*/
$commentdata = apply_filters( ‘preprocess_comment’, $commentdata );
$commentdata[‘comment_post_ID’] = (int) $commentdata[‘comment_post_ID’];
if ( isset( $commentdata[‘user_ID’] ) && $prefiltered_user_id !== (int) $commentdata[‘user_ID’] ) {
$commentdata[‘user_id’] = $commentdata[‘user_ID’] = (int) $commentdata[‘user_ID’];
} elseif ( isset( $commentdata[‘user_id’] ) ) {
$commentdata[‘user_id’] = (int) $commentdata[‘user_id’];
}
$commentdata[‘comment_parent’] = isset($commentdata[‘comment_parent’]) ? absint($commentdata[‘comment_parent’]) : 0;
$parent_status = ( 0 < $commentdata[‘comment_parent’]=“” )=“” wp_get_comment_status($commentdata[‘comment_parent’])=“” :=“” ”;=“” $commentdata[‘comment_parent’]=“(“ ‘approved’=“=” $parent_status=“” ||=“” ‘unapproved’=“=” $parent_status=“” )=“” $commentdata[‘comment_parent’]=“” :=“” 0;=“” if=“” (=“” !=“” isset(=“” $commentdata[‘comment_author_ip’]=“” )=“” )=“” {=“” $commentdata[‘comment_author_ip’]=“$_SERVER[‘REMOTE_ADDR’];” }=“” $commentdata[‘comment_author_ip’]=“preg_replace(“ ‘/[^0-9a-fa-f:.,=”” ]/’,=“” ”,=“” $commentdata[‘comment_author_ip’]=“” );=“” if=“” (=“” !=“” isset(=“” $commentdata[‘comment_agent’]=“” )=“” )=“” {=“” $commentdata[‘comment_agent’]=“isset(“ $_server[‘http_user_agent’]=“” )=“” $_server[‘http_user_agent’]:=“” ”;=“” }=“” $commentdata[‘comment_agent’]=“substr(“ $commentdata[‘comment_agent’],=“” 0,=“” 254=“” );=“” if=“” (=“” empty(=“” $commentdata[‘comment_date’]=“” )=“” )=“” {=“” $commentdata[‘comment_date’]=“current_time(‘mysql’);” }=“” if=“” (=“” empty(=“” $commentdata[‘comment_date_gmt’]=“” )=“” )=“” {=“” $commentdata[‘comment_date_gmt’]=“current_time(“ ‘mysql’,=“” 1=“” );=“” }=“” $commentdata=“wp_filter_comment($commentdata);” $commentdata[‘comment_approved’]=“wp_allow_comment($commentdata);” $comment_id=“wp_insert_comment($commentdata);” if=“” (=“” !=“” $comment_id=“” )=“” {=“” $fields=“array(“ ‘comment_author’,=“” ‘comment_author_email’,=“” ‘comment_author_url’,=“” ‘comment_content’=“” );=“” foreach(=“” $fields=“” as=“” $field=“” )=“” {=“” if=“” (=“” isset(=“” $commentdata[=“” $field=“” ]=“” )=“” )=“” {=“” $commentdata[=“” $field=“” ]=“$wpdb-“>strip_invalid_text_for_column( $wpdb->comments, $field, $commentdata[ $field ] );
}
}
$commentdata = wp_filter_comment( $commentdata );
$commentdata[‘comment_approved’] = wp_allow_comment( $commentdata );
$comment_ID = wp_insert_comment( $commentdata );
if ( ! $comment_ID ) {
return false;
}
}
/**
* Fires immediately after a comment is inserted into the database.
*
* @since 1.2.0
*
* @param int $comment_ID The comment ID.
* @param int $comment_approved 1 (true) if the comment is approved, 0 (false) if not.
*/
do_action( ‘comment_post’, $comment_ID, $commentdata[‘comment_approved’] );
if ( ‘spam’ !== $commentdata[‘comment_approved’] ) { // If it’s spam save it silently for later crunching
if ( ‘0’ == $commentdata[‘comment_approved’] ) {
wp_notify_moderator( $comment_ID );
}
// wp_notify_postauthor() checks if notifying the author of their own comment.
// By default, it won’t, but filters can override this.
if ( get_option( ‘comments_notify’ ) && $commentdata[‘comment_approved’] ) {
wp_notify_postauthor( $comment_ID );
}
}
return $comment_ID;
}
|
wp_new_comment() 源文件
- 原文:http://codex.wordpress.org/Function_Reference/wp_new_comment
- 翻译:黄聪@WordPress之魂
Leave a Reply
要发表评论,您必须先登录。