后台-设置-讨论- 评论者必须填入名字和电子邮箱地址,取消勾选后,可以不显示名字和邮箱。文章评论都是匿名。
如果想保留名字且需要显示邮箱输入框(非必填)的时候,以下修改就可能用得上了。
此方法直接是修改WordPress系统源代码,虽然达到了目的,但灵活性不行,对系统不熟悉的慎用,如后期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张图(忽略表单样式,不同主题样式可能也会不同):