I invested a good deal of time today customizing a comment form in a BuddyPress child theme. My goals were to:
- Add a new field called, “Organization”
- Remove the “URL” field
- Remove the “Comment” text that appears above the corresponding textarea
The biggest learning for me was figuring out how comment_form, comments_template, and wp_list_comments fit together.
I learned a lot from Otto’s article on the subject, but that article didn’t address everything I needed to accomplish. The following is what I did to accomplish the aforementioned goals.
In functions.php, I have the following:
// Change "Website" to "Organization" on the comment form.
add_filter('comment_form_default_fields','add_organization_to_comments');
function add_organization_to_comments($fields) {
// New fields
$fields['organization'] = '';
$fields['author'] = ' ' . ( $req ? '*' : '' ) .
'
';
// Remove unwanted default fields
unset($fields['url']);
return $fields;
}
// save extra fields in database
add_action( 'comment_post', 'save_comment' );
function save_comment($comment_id)
{
add_comment_meta( $comment_id, 'organization', esc_attr($_POST['organization']), true );
}
';
$fields['email'] = 'That’s it!
Tomorrow I will share how I displayed the “organization” field in the “comments” panel of the WordPress admin screen.
ttfn.
2 Comments
More posts from themightymo.com
How to Connect a GoDaddy Site to ManageWP
GoDaddy owns ManageWP, and, strangely, they make it very difficult to add GoDaddy-managed WordPress sites to their ManageWP service. Thankfully, there’s a quick workaround: Visit https://yoursite.com/wp-admin/plugins.php?showWorker=1 — This will make the ManageWP “Worker” plugin visible. Copy the connection info from the ManageWP Worker plugin. Add the site per-normal on ManageWP. That’s it! I hope this…
How to check if your current page is the wp-login.php page
I realized this morning that my TMM Maintenance Mode WordPress plugin had a bug that was causing the wp-login.php page to be inaccessible. The solution was to write a simple function that checks whether or not we’re currently on a login page, and then add a call to that function in my code. Here’s the…
WooCommerce Product Image Gallery Not Loading with WP Rocket Active
Today I updated a WooCommerce site, and everything worked fine, except for the images on product pages – they were not displaying at all. After a lot of trial & error, I realized that WP Rocket was to blame. I’m not sure exactly what the issue was (though my hunch is that it had to…
Danger Will Robinson!
This code leaves your site open to a XSS attack through the comments form. I highly recommend filtering the POSTed organization field.
@Otto – Thanks for the heads-up there!
All, I have incorporated Otto’s suggestion and added the esc_attr() function to the POSTs in the code above.