web-dev-qa-db-ja.com

コメント対ピングバック次ページの号

私は本当に迷惑な問題を抱えています。

コメントがない場合、コメントは表示されません。ピングバックがない場合は、表示されません。

しかし、pingbackがあり、多くのコメントがあるので、2、3ページなどのコメントがある場合は、次のようになります。pingbackは page 1 に正しく表示されます。 。 2ページ にアクセスすると、PingbackのHTMLマークアップが表示されますが、実際のpingは表示されません。

理由がわかりません。 1ページ目と同じpingbackが表示されるか、HTMLマークアップがまったく表示されない(そしてpingが表示されない)ことが必要です。

あなたはここで問題を見ることができます。 1ページではすべてうまく機能しますが、2ページではpingback用のHTMLマークアップしか取得できません。

これがコードです:

<?php if ( have_comments() ) : ?>
        <?php if ( ! empty($comments_by_type['comment']) ) : ?>
       <h2 class="h2comments"><img src="http://zoomingjapan.com/wp-content/themes/alltuts-child/images/comments_big.png" /><?php comments_number('No Comments', '1 Comment', '% Comments' );?> <a href="#respond" class="addComment"><img src="http://zoomingjapan.com/wp-content/themes/alltuts/images/add_your_coment_ver2.png" border="0"></a></h2>


        <ul class="commentlist">
      <?php wp_list_comments('type=comment&callback=mytheme_comment'); ?>
<div class="navigation">
  <?php paginate_comments_links(); ?> 
 </div>
        </ul>
        <?php endif; ?>



        <?php if ( ! empty($comments_by_type['pings']) ) : ?>
        <h2 id="pings">Trackbacks/Pingbacks</h2>
    <ul class="pinglist">
    <?php wp_list_comments('type=pings&callback=list_pings'); ?>
        </ul>
        <?php endif; ?>



 <?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; ?>

私がすでに試みたのはナビゲーションの位置を変えるか、さらには削除することでした。それは変わらなかった。

他のアイデア?

編集:10月21日

HTMLマークアップを削除してもうまくいかない場合は、代わりにHTMLマークアップ内にメッセージを表示することをお勧めします。「申し訳ありませんが、まだpingはありません」のようなものです。私はこれを試したが、何も表示されていない:

  <?php if ( ! empty($comments_by_type['pings']) ) : ?>
    <h2 id="pings">Trackbacks/Pingbacks</h2>
    <ul class="pinglist">
    <?php wp_list_comments('type=pings&callback=list_pings'); ?>
    </ul>
    <?php 
         else :
         echo '<p class="no-pingbacks">sorry but there are no pingbacks yet</p>';
        endif; 
         ?> 

誰かが助けてくれることを願っています。

1
japanworm

コメントとは別にpingを一覧表示しているので、pingを除外するにはおそらくget_comments_numberをフィルタリングする必要があります。 これが私のやり方です

<?php
function oenology_comment_count( $count ) {  
// Only filter the comments number
// in the front-end display
if ( 
// WordPress conditional that returns true if
// the current page is in the WP-Admin back-end
! is_admin() 
) {
    global $id;
    $comments_by_type = &separate_comments( get_comments( 'status=approve&post_id=' . $id ) );
    return count( $comments_by_type['comment'] );
} 
// Otherwise, when in the WP-Admin
// back end, don't filter comments
// number
else {
    return $count;
}
}
// Hook custom comment number into 'get_comments_number'
add_filter('get_comments_number', 'oenology_comment_count', 0);
?>

これはまた、コメントのページ付けに関するコメント数にも影響を与えると確信しています。 (警告:あなたのpingリストはページ番号なしを出力します。)

1
Chip Bennett

私は同じ問題に直面していました。解決したようです。他の誰かがこの問題に直面している場合に備えて:

これを交換してください:

wp_list_comments('type=pings&callback=list_pings');

これで:

wp_list_comments('type=pings&callback=list_pings&page=1&per_page=1000');
0