Opened 11 months ago
Last modified 11 months ago
#60281 new defect (bug)
Cannot unset comment_notes_before
Reported by: | bugnumber9 | Owned by: | |
---|---|---|---|
Milestone: | Future Release | Priority: | normal |
Severity: | normal | Version: | 3.0 |
Component: | Comments | Keywords: | needs-unit-tests |
Focuses: | Cc: |
Description
I want to reorder comment fields by unsetting and setting them back in my chosen order. Here's my code:
function my_reorder_comments_fields( $fields ) { $comment_notes_before_field = $fields['comment_notes_before']; $comment_field = $fields['comment']; $author_field = $fields['author']; $email_field = $fields['email']; $url_field = $fields['url']; $cookies_field = $fields['cookies']; unset( $fields['comment_notes_before'] ); unset( $fields['comment'] ); unset( $fields['author'] ); unset( $fields['email'] ); unset( $fields['url'] ); unset( $fields['cookies'] ); $fields['author'] = $author_field; $fields['email'] = $email_field; $fields['comment_notes_before'] = $comment_notes_before_field; $fields['cookies'] = $cookies_field; $fields['comment'] = $comment_field; return $fields; } add_filter( 'comment_form_fields', 'my_reorder_comments_fields' );
Result - https://imgur.com/a/ebY1HBW
You can see that $fields['comment_notes_before']
remains on top.
To prove the point, I changed my code to just unset all fields:
function my_unset_comments_fields( $fields ) { unset( $fields['comment_notes_before'] ); unset( $fields['comment'] ); unset( $fields['author'] ); unset( $fields['email'] ); unset( $fields['url'] ); unset( $fields['cookies'] ); return $fields; } add_filter( 'comment_form_fields', 'my_unset_comments_fields' );
Result: https://imgur.com/a/B5wNngj
So $fields['comment_notes_before']
isn't getting unset while all other fields do.
Change History (6)
This ticket was mentioned in Slack in #core by jorbin. View the logs.
11 months ago
#3
@
11 months ago
- Keywords needs-unit-tests added
- Version changed from 6.4.2 to 3.0
These filters were introduced in 3.0, so updating the version to that.
I think an automated test that demonstrates what is seen as a bug would be extremely helpful here.
#5
follow-up:
↓ 6
@
11 months ago
Tested this on TwentyTwentyFour with WP 6.4.2.
I think the problem here was the wrong filter being used. The comment_notes_before
is not a comment form field, but part of the comment form defaults.
Using the comment_form_defaults
filter will unset that value:
function my_update_comment_defaults( $defaults ) {
$defaults['comment_notes_before'] = '';
return $defaults;
}
add_filter( 'comment_form_defaults', 'my_update_comment_defaults' );
#6
in reply to:
↑ 5
@
11 months ago
@shooper Looks like it's possible to unset all form fields (I just tested with url
field) from comment_form_defaults
too. Obviously, the same can be done from comment_form_fields
for all fields except comment_notes_before
.
Besides that, comment_notes_before
is listed in https://developer.wordpress.org/reference/functions/comment_form/ and HTML-wise it's a part of the form - https://imgur.com/a/3tH6JBN
I also get a notice
Undefined index: comment_notes_before
that barks at$comment_notes_before_field = $fields['comment_notes_before'];
in the first code.However, it's mentioned in https://developer.wordpress.org/reference/functions/comment_form/, and I can access and modify it like this: