我必须为自定义注释域提供现时值吗?

时间:2018-06-21 作者:Willi

我正在处理我的评论部分,并添加了一个自定义字段

<input type="hidden" name="be_user_star_rating" id="be_user_star_rating" value="" />
其值由Javascript设置。

使用以下内容进行验证:

add_action( \'comment_post\', \'be_comment_rating_insert_comment\', 10, 1 );
function be_comment_rating_insert_comment( $comment_id )
{
    if( isset( $_POST[\'be_user_star_rating\'] ) 
        && $_POST[\'be_user_star_rating\'] > 0
        && $_POST[\'be_user_star_rating\'] <= 5
        && is_numeric($_POST[\'be_user_star_rating\']) ) {

        $val  = (int) $_POST[\'be_user_star_rating\'];
        update_comment_meta( $comment_id, \'be_user_star_rating\', esc_attr( $val ) );
    } 
}
因为这是连接到comment_post, 我是否需要担心检查自定义nonce(超出验证范围)?或者Worpdress会处理它吗?

1 个回复
最合适的回答,由SO网友:Xhynk 整理而成

A.WordPress Nonce, 虽然不是真正的,但它的功能类似于保护表单或页面免受未经授权的访问和滥用。

默认情况下,如果当前用户具有unfiltered_html 能力。

因此,如果表单是用标准过程实现的,那么您所要做的就是验证您自己的输入,而不必处理nonce。

从…起comment-template.php:

/**
 * Display form token for unfiltered comments.
 *
 * Will only display nonce token if the current user has permissions for
 * unfiltered html. Won\'t display the token for other users.
 *
 * The function was backported to 2.0.10 and was added to versions 2.1.3 and
 * above. Does not exist in versions prior to 2.0.10 in the 2.0 branch and in
 * the 2.1 branch, prior to 2.1.3. Technically added in 2.2.0.
 *
 * Backported to 2.0.10.
 *
 * @since 2.1.3
 */

结束