I think I would go with a customizer setting, which a user could use to select a page (select) or pages (checkboxes) where the custom comment fields would be shown. The setting should save page ID(s).
Then I'd add a callback function to
template_redirect action, which would first get the customizer setting value with
get_theme_mod() and then compare the current query against the saved value. This could be either a
is_page() check, if the user can only select one page, or a
is_array() check with the
get_queried_object_id() value, if the the user was allowed to choose multiple pages and the saved value was an array or turned into one.
If the above conditional check is passed, then appropriate action and filter callbacks would be applied to the comment form inside the
Or, if you want to use a custom page template instead of the customizer setting, then you could just swap the above conditional checks with
is_page_template() and keep the concept otherwise the same.
But with customizer you could also provide options to the user to choose, which additional fields should be shown on the comment form, if needed. Each custom field should then have its own "is enabled" check and rendering callback in the
P.s. I'm sorry for not adding code examples. I'm typing this on my mobile device and adding code this way is a bit inconvenient.