WordPress文章评论取消邮箱必填的验证

后台-设置-讨论- 评论者必须填入名字和电子邮箱地址,取消勾选后,可以不显示名字和邮箱。文章评论都是匿名。

如果想保留名字且需要显示邮箱输入框(非必填)的时候,以下修改就可能用得上了。

1、修改wp-includes/comment.php文件,找到wp_handle_comment_submission( $comment_data ) 函数,修改如下:

function wp_handle_comment_submission( $comment_data ) {
    ......
    //注释以下代码
    /*
	if ( get_option( 'require_name_email' ) && ! $user->exists() ) {
		if ( '' == $comment_author_email || '' == $comment_author ) {
			return new WP_Error( 'require_name_email', __( '<strong>Error:</strong> Please fill the required fields.' ), 200 );
		} elseif ( ! is_email( $comment_author_email ) ) {
			return new WP_Error( 'require_valid_email', __( '<strong>Error:</strong> Please enter a valid email address.' ), 200 );
		}
	}
	*/
       //添加以下代码
	if ( get_option( 'require_name_email' ) && ! $user->exists() ) {
		if ( '' == $comment_author ) {
			return new WP_Error( 'require_name_email', __( '<strong>Error:</strong> Please fill the required fields.' ), 200 );
		}
	}
    ......
}

2、去掉电子邮箱中的*号(必填的标识) ,修改wp-includes/comment-template.php文件,找到comment_form($args = array(), $post = null)函数,修改如下:

function comment_form($args = array(), $post = null){
    ......
	// Remove `aria-describedby` from the email field if there's no associated description.
	if ( isset( $args['fields']['email'] ) && ! str_contains( $args['comment_notes_before'], 'id="email-notes"' ) ) {
		$args['fields']['email'] = str_replace(
			' aria-describedby="email-notes"',
			'',
			$args['fields']['email']
		);
	}
	//添加代码
	$args['fields']['email'] = str_replace(
		'*',
		'',
		$args['fields']['email']
	);
    ......
}

修改前后对比如下2张图(忽略表单样式,不同主题样式可能也会不同):

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

Scroll to Top