WordPress,评论回复是在最后一条消息下,而不是在回复的评论下

时间:2012-05-30 11:37:37

标签: wordpress comments wordpress-theming

我尝试创建一个WordPress主题,我有几个问题。

我尝试使用comment_reply_link但根本不起作用,我希望通过添加以下代码来手动创建链接:

<?php
    $permalink = get_permalink() . "?replytocom=" . get_comment_ID() . "#comments-form";
    $onclick = "return addComment.moveForm('comment-" . get_comment_ID() . "', '" . get_comment_ID() . "', 'comments-form', '" . get_the_ID() . "')";
?>
<a href="<?php echo $permalink; ?>" onclick="<?php echo $onclick; ?>">
    <?php _e('Reply', 'z'); ?>
</a>

此外,我已将评论回复列入正确并正确加载。

我的自定义回复链接正常运行。单击“回复”链接时,表单会在我的评论下移动,但在我提交评论后,回复不会放在回复的评论下,而是放在评论的末尾。

注意:在我的评论表单中,我输入了以下代码:

<input type='hidden' name='comment_post_ID' value='<?php the_ID(); ?>' id='comment_post_ID' />
<input type='hidden' name='comment_parent' id='comment_parent' value='0' />

并且通过使用Chrome控制台,我看到字段comment_parent值已更新为已回复的评论ID

1 个答案:

答案 0 :(得分:2)

好的,我真的不知道如何帮助您解决您的特殊问题,但我可以为您提供一些完美的自定义评论模板的指导! 我使用ThemeShaper http://themeshaper.com/2009/07/01/wordpress-theme-comments-template-tutorial/中的Ian Stewart教程制作我的评论模板。 首先,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.</p>
    <?php
        return;
    }
?>

<!-- You can start editing here. -->

<?php if ( have_comments() ) : ?>
    <h3 id="comments"><?php comments_number('No hay Respuestas', 'Hay 1 Respuesta', 'Hay % Respuestas' );?></h3>

    <ol class="commentlist">
        <?php wp_list_comments('type=comment&callback=advanced_comment'); //this is the important part that ensures we call our custom comment layout defined above 
                ?>
    </ol>
    <div class="clear"></div>
    <div class="comment-navigation">
        <div class="older"><?php previous_comments_link() ?></div>
        <div class="newer"><?php next_comments_link() ?></div>
    </div>
 <?php else : // this is displayed if there are no comments so far ?>

    <?php if ( comments_open() ) : ?>
        <!-- If comments are open, but there are no comments. -->

     <?php else : // comments are closed ?>
        <!-- If comments are closed. -->
        <p class="nocomments">Los comentarios están cerrados.</p>

    <?php endif; ?>
<?php endif; ?>


<?php if ( comments_open() ) : ?>

<div id="respond">

<h3><?php comment_form_title( 'Comentar', 'Responder %s' ); ?></h3>

<div class="cancel-comment-reply">
    <small><?php cancel_comment_reply_link(); ?></small>
</div>

<?php if ( get_option('comment_registration') && !is_user_logged_in() ) : ?>
<p>Debes iniciar sesión para poder comentar.</p>
<a href="http://dfine.me?loginGoogle=1&redirect=http://dfine.me" onclick="window.location = 'http://dfine.me?loginGoogle=1&redirect='+window.location.href; return false;"><div class="new-google-btn new-google-3 new-google-default-anim"><div class="new-google-3-1"><div class="new-google-3-1-1">Iniciar Sesión</div></div></div></a>
<a href="http://dfine.me?loginFacebook=1&redirect=http://dfine.me" onclick="window.location = 'http://dfine.me?loginFacebook=1&redirect='+window.location.href; return false;"><div class="new-fb-btn new-fb-3 new-fb-default-anim"><div class="new-fb-3-1"><div class="new-fb-3-1-1">Iniciar Sesión</div></div></div></a>

<?php else : ?>

<form action="<?php echo get_option('siteurl'); ?>/wp-comments-post.php" method="post" id="commentform">

<?php if ( is_user_logged_in() ) : ?>

<p>Sesión iniciada por <a href="<?php echo get_option('siteurl'); ?>/wp-admin/profile.php"><?php echo $user_identity; ?></a>. <br><a href="<?php echo wp_logout_url(get_permalink()); ?>" title="Cerrar sesión">Cerrar sesión &raquo;</a></p>

<?php else : //this is where we setup the comment input forums ?>


<?php endif; ?>

<!--<p><small><strong>XHTML:</strong> You can use these tags: <code><?php echo allowed_tags(); ?></code></small></p>-->


<p><textarea name="comment" id="comment" cols="90%" rows="10" tabindex="4"></textarea></p>

<p><input name="submit" type="submit" id="submit" tabindex="5" value="Post" />
<?php comment_id_fields(); ?>
</p>
<?php do_action('comment_form', $post->ID); ?>

</form>

<?php endif; // If registration required and not logged in ?>
</div>

<?php endif; // if you delete this the sky will fall on your head ?>

我更改了登录部分,因为我使用了Nextend Connect Facebook和Google插件。 functions.php中的函数:

function advanced_comment($comment, $args, $depth) {
   $GLOBALS['comment'] = $comment; ?>

<li <?php comment_class(); ?> id="li-comment-<?php comment_ID() ?>">
   <div class="comment-author vcard">
     <?php echo get_avatar($comment,$size='90',$default='<path_to_url>' ); ?>
     <small class="comment-date"><?php printf(__('%1$s at %2$s'), get_comment_date(),  get_comment_time()) ?></small>     
     <div class="comment-meta"<a href="<?php the_author_meta( 'user_url'); ?>"><?php printf(__('%s'), get_comment_author_link()) ?></a> dice:<?php edit_comment_link(__('(Edit)'),'  ','') ?></div>
     </div>
     <div class="clear"></div>

     <?php /*if ($comment->comment_approved == '0') : ?>
       <em><?php _e('Your comment is awaiting moderation.') ?></em>
       <br />
     <?php endif; */?>

     <div class="comment-text"> 
         <?php comment_text() ?>
         <div class="reply">
      <?php comment_reply_link(array_merge( $args, array('depth' => $depth, 'max_depth' => $args['max_depth'], 'login_text' => "Responder"))) ?>
       <?php delete_comment_link(get_comment_ID()); ?>
   </div>
     </div>
   <div class="clear"></div>
<?php }

和此:

function delete_comment_link($id) {
  if (current_user_can('edit_post')) {
    echo '- <a href="'.admin_url("comment.php?action=cdc&c=$id").'"> Eliminar</a> ';
    echo '- <a href="'.admin_url("comment.php?action=cdc&dt=spam&c=$id").'"> Spam</a>';
  }
}

此外,我对核心comment-template.php进行了一些小修改,以便在“回复”链接旁边添加图片。评论-的template.php:

if ( get_option('comment_registration') && !$user_ID )
        $link = '<a rel="nofollow" class="comment-reply-login" href="' . esc_url( wp_login_url( get_permalink() ) ) . '"><img src="' . $direccion_sitio . '/images/reply.png" alt="Responder" style="margin-right:5px;">' . $login_text . '</a>';
    else
        $link = "<a class='comment-reply-link' href='" . esc_url( add_query_arg( 'replytocom', $comment->comment_ID ) ) . "#" . $respond_id . "' onclick='return addComment.moveForm(\"$add_below-$comment->comment_ID\", \"$comment->comment_ID\", \"$respond_id\", \"$post->ID\")'><img src='" . $direccion_sitio . "/images/reply.png' alt='Responder' style='margin-right:5px;'>$reply_text</a>";
    return apply_filters('comment_reply_link', $before . $link . $after, $args, $comment, $post);

最后,CSS!

/*Comentarios*/
.comments-template{
    width: 730px;
    display: inline-block;
    margin: 10px 0;
    padding-top: 20px;
    border-top: 3px dotted #CCC;
}

#comments{
    padding-bottom: 10px;
    border-bottom: 1px solid #EEE;
}

.commentlist{
    margin: 15px 0;
}

.comment-meta{
    padding: 5px 10px 1px 0;
    border-bottom: 1px dashed lightGrey;
    margin-bottom: 5px;
    display: inline-block;
}

.comment-meta .url{
    font-family: 'Franklin Gothic Book Italic', sans-serif;
    font-size: 1.1em;
    font-weight: 700;
}

.comment-text{
    padding: 5px 0 35px 0;
    min-height: 65px;
    position: relative;
    border-bottom: 1px solid #EEE;
    margin-bottom: 10px;
}
.comment-date{
    display: block;
    padding-top: 5px;
    font-size: 0.7em;
    color: #7E7E7E;
    font-style: italic; 
}
.comments-template .avatar-90{
    float: left;
    padding: 5px 15px 10px 0;
}
.reply{
    position: absolute;
    bottom: 10px;
    right: 10px;
}
.depth-2{
    margin-left: 105px;
}
.depth-3{
    margin-left: 210px;
}
#respond{
    margin-bottom: 30px;    
}
/*Fin Comentarios*/

如果我做对了,你的主要问题是特定评论的答案没有正确显示,所以也许你需要查看你的CSS,在我的情况下,.depth类。

如果您想测试我的自定义评论模板,您可以访问http://dfine.me并在任何帖子中发表评论。我在Wordpress首选项中的配置是只允许1个嵌套注释。 希望这可以帮助! PS:对不起混合的“英语 - 西班牙语”声明......