Since threaded comments were enabled in WordPress 2.7, most themes include the following line in header.php
<?php if ( is_singular() ) wp_enqueue_script( 'comment-reply' ); ?>
This code checks if the visitor is browsing either a page or a post and adds the JavaScript required for threaded comments if they are.
I prefer a slight variation
<?php
if ( is_singular() && comments_open() && get_option('thread_comments') )
wp_enqueue_script( 'comment-reply' );
?>
My variation checks if the visitor is browsing either a page or a post, if comments are open for the entry, and finally, if threaded comments are enabled. If all of these conditions are met, the JavaScript required for threaded comments is added.
If you run your wp_enqueue_script calls in functions.php, as I do, this is the code to use:
<?php
function theme_queue_js(){
if ( (!is_admin()) && is_singular() && comments_open() && get_option('thread_comments') )
wp_enqueue_script( 'comment-reply' );
}
add_action('wp_print_scripts', 'theme_queue_js');
?>
The call is added to the wp_print_scripts action as is_singular
and comments_open
are unknown during the init action.
Note: I’ve written a plugin to make the comment-reply JavaScript unobtrusive, it’s call Rapid Comment Reply.