Assuming you’re properly using comment_form()
to output the comment reply form:
if( ! array_key_exists( 'comments', $wp_query->query_vars ) ) {
// Output the comment form
comment_form();
}
Edit
Based on your comments.php
code:
// If the user isn't logged in, don't display comment form
if ( is_user_logged_in() ) {
global $wp_query;
// If the post type isn't 'debate',
// Or if the 'comments' array key exists in the query
// Display the comment form
if ( 'debate' != get_post_type() || ! array_key_exists( 'comments', $wp_query->query_vars ) ) {
comment_form();
}
}
I’m taking a complete stab in the dark here, because it’s not entirely clear how your comments template is being included in your template.
Edit 2
I don’t think this will work as intended:
if ( comments_open() )
comments_template( '', true );
See that extra line break? Without curly braces around your conditional, the two lines aren’t related. You need to do one of the following:
if ( comments_open() )
comments_template( '', true );
or, better yet:
if ( comments_open() ) {
comments_template( '', true );
}