Hi there. I'm having a bit of an issue with my nested comments. I have just upgraded my comments.php to the new format with wp_list_comments() and all, and have put if ( is_singular() ) wp_enqueue_script( 'comment-reply' ); in my header.php, just above wp_head(). Everything should be good to go.
But - no matter if I post comments or reply to them, the HTML output only assigns "depth-1" classes to my <li>s - not "depth-2", "depth-3" and so on.
This is my code:
comments.php:
<?php
/**
* @package WordPress
* @subpackage Default_Theme
*/
// Do not delete these lines
if (!empty($_SERVER['SCRIPT_FILENAME']) && 'comments.php' == basename
($_SERVER['SCRIPT_FILENAME']))
die ('Please do not load this page directly. Thanks!');
if ( post_password_required() ) { ?>
<p class="nocomments">This post is password protected.
Enter the password to view comments.
<?php
return;
}
?>
<!-- You can start editing here. -->
<div class="separator" style="margin-top: 20px; margin-bottom: 20px;"></div>
<?php if ( have_comments() ) : ?>
<h3 id="comments"><?php comments_number('No Responses', 'One Response', '% Responses' );?> to “<?php the_title(); ?>”</h3>
<ol class="commentlist">
<?php wp_list_comments('type=comment&callback=custom_comments'); ?>
</ol>
<div class="navigation">
<div class="alignleft"><?php previous_comments_link() ?></div>
<div class="alignright"><?php next_comments_link() ?></div>
</div>
<?php else : // this is displayed if there are no comments so far ?>
<?php if ('open' == $post->comment_status) : ?>
<!-- If comments are open, but there are no comments. -->
<?php else : // comments are closed ?>
<!-- If comments are closed. -->
<p class="nocomments">Comments are closed.</p>
<?php endif; ?>
<?php endif; ?>
<?php if ('open' == $post->comment_status) : ?>
<div id="respond">
<h1 style="font-size: 20px;"><?php comment_form_title( 'Skriv en kommentar', 'Skriv en kommentar til %s' ); ?></h1>
<div class="cancel-comment-reply">
<small><?php cancel_comment_reply_link(); ?></small>
</div>
<?php if ( get_option('comment_registration') && !$user_ID ) : ?>
<p>You must be <a href="<?php echo get_option('siteurl'); ?>/wp-login.php?redirect_to=<?php echo urlencode(get_permalink()); ?>">logged in</a> to post a comment.</p>
<?php else : ?>
<form class="comment_wrapper" action="<?php echo get_option('siteurl'); ?>/wp-comments-post.php" method="post" id="commentform">
<?php if ( is_user_logged_in() ) : ?>
<ul>
<li class="onethird">
<div style="margin-bottom: 10px;"><?php printf(__('Logged in as %s.'), '<a href="'.get_option('siteurl').'/wp-admin/profile.php">'.$user_identity.'</a>'); ?> | <?php wp_loginout(); ?></div>
</li>
<?php else : ?>
<ul>
<li class="onethird">
<div style="border: 0px solid;"> <!-- IE7 HACK -->
<input class="input" type="text" name="author" id="author" title="Navn" value="<?php echo esc_attr($comment_author); ?>" size="22" tabindex="1" />
<div class="form_title">Navn<span class="req"> *</span></div>
<input class="input" type="text" name="email" id="email" title="Email" value="<?php echo esc_attr($comment_author_email); ?>" size="22" tabindex="2" />
<div class="form_title">Email (offentliggøres ikke)<span class="req"> *</span></div>
<input class="input" type="text" name="url" id="url" title="WWW" value="<?php echo esc_attr($comment_author_url); ?>" size="22" tabindex="3" />
<div class="form_title">WWW</div>
</div>
<div id="recaptcha_widget">
<input type="text" id="recaptcha_response_field" name="recaptcha_response_field" />
<div class="form_title">Skriv nedenstående to ord<span class="req"> *</span></div>
<div id="recaptcha_image"></div>
<div class="reload_captcha"><a href="javascript:Recaptcha.reload()"></a></div>
<div class="recaptcha_only_if_audio"><a href="javascript:Recaptcha.switch_type('image')"></a></div>
<div class="recaptcha_only_if_image"><a href="javascript:Recaptcha.switch_type('audio')"></a></div>
<div class="help"><a href="javascript:Recaptcha.showhelp()"></a></div>
<div class="cleaner"></div>
<div class="comments_tip">Tip! For at undgå reCAPTCHA-udfordringen når du kommenterer blogindlæg, musik og webdesign, kan du registrere dig som bruger. <?php wp_register('', ''); ?></div>
<div class="comments_tip">Tip 2! Hvis du vil vise et billede sammen med din kommentar, kan du oprette en <a class="liexternal" href="http://www.gravatar.com/">Gravatar</a>.</div>
</div>
</li>
<?php endif; ?>
<li class="twothirds">
<div style="border: 0px solid;"> <!-- IE7 HACK -->
<textarea class="commentform_input" name="comment" id="comment" cols="0" rows="0" tabindex="4"></textarea>
<div class="form_title">Kommentar<span class="req"> *</span></div>
<div class="form_title"><span class="req">Felter markeret med * SKAL udfyldes.</span></div>
<input class="submit" name="submit" type="submit" id="submit" tabindex="5" value="" title="Send" />
<input type="hidden" name="comment_post_ID" value="<?php echo $id; ?>" />
<?php do_action('comment_form', $post->ID); ?>
</div>
</li>
</ul>
<div class="cleaner"></div>
</form>
<?php endif; // If registration required and not logged in ?>
<?php else : // Comments are closed ?>
<p><?php _e('Sorry, the comment form is closed at this time.'); ?></p>
<?php endif; ?>
And since I'm using a custom wp_list_comments(), this is what I have defined in my theme's functions.php:
function custom_comments($comment, $args, $depth) {
$GLOBALS['comment'] = $comment; ?>
<li <?php comment_class(); ?> id="li-comment-<?php comment_ID() ?>">
<div id="comment-<?php comment_ID(); ?>">
<div class="comment_text_wrapper"><a href="<?php echo htmlspecialchars( get_comment_link( $comment->comment_ID ) ) ?>"></a>
<?php comment_text() ?>
<div class="reply">
<?php comment_reply_link(array_merge( $args, array('depth' => $depth, 'max_depth' => $args['max_depth']))) ?>
</div>
<?php edit_comment_link(__('Edit'),' ','') ?>
<?php if ($comment->comment_approved == '0') : ?>
<em><?php _e('Your comment is awaiting moderation.') ?></em>
<?php endif; ?>
</div>
<div class="comment_author_wrapper">
<?php echo get_avatar($comment,$size='32',$default='<path_to_url>' ); ?>
<?php printf(__('%s'), get_comment_author_link()) ?>
<?php printf(__('<div class="datetime">%1$s at %2$s</div>'), get_comment_date(), get_comment_time()) ?>
</div>
<div class="cleaner"></div>
<div class="separator" style="margin-top: 20px; margin-bottom: 20px;"></div>
</div>
<?php }
?>
Any idea what the problem might be? You can test it out for yourself at my site: http://www.psylicium.dk/blog/2009/12/23/sa-er-vi-flyttet (I hope this is allowed :)