2

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 に更新されていることを確認しました。

4

1 に答える 1

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*/

私が正しければ、あなたの主な問題は、特定のコメントの回答が適切に表示されないことです。そのため、私の場合は .depth クラスの CSS を確認する必要があるかもしれません。

私のカスタム コメント テンプレートをテストしたい場合は、http://dfine.meにアクセスして、任意の投稿にコメントしてください。Wordpress の設定での私の構成では、ネストされたコメントを 1 つだけ許可しています。お役に立てれば!PS: 「英語とスペイン語」が混在して申し訳ありません...

于 2012-12-13T15:57:54.580 に答える