2011-12-06 32 views
0

コメントを送信した後、前の投稿にページが移動するという結果になりました。前の投稿はコメントを投稿した後に表示されます

Thisはウェブページです。 必要に応じて試してみてください。

これはcomments.phpからのコードです:

<?php 

if (!empty($_SERVER['SCRIPT_FILENAME']) && 'comments.php' == basename($_SERVER['SCRIPT_FILENAME'])) 
    die ('Please do not load this page directly. Thanks!'); 

if (post_password_required()) { ?> 
    This post is password protected. Enter the password to view comments. 
<?php 
    return; 
} 
?> 

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

<h2 id="comments"><?php comments_number('No Responses', 'One Response', '% Responses');?></h2> 

<div class="navigation"> 
    <div class="next-posts"><?php previous_comments_link() ?></div> 
    <div class="prev-posts"><?php next_comments_link() ?></div> 
</div> 

<ol class="commentlist"> 
    <?php wp_list_comments(); ?> 
</ol> 

<div class="navigation"> 
    <div class="next-posts"><?php previous_comments_link() ?></div> 
    <div class="prev-posts"><?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 ?> 
    <p>Comments are closed.</p> 

<?php endif; ?> 

<?php endif; ?> 

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

<div id="respond"> 

<h2><?php comment_form_title('Leave a Reply', 'Leave a Reply to %s'); ?></h2> 

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

<?php if (get_option('comment_registration') && !is_user_logged_in()) : ?> 
    <p>You must be <a href="<?php echo wp_login_url(get_permalink()); ?>">logged in</a> to post a comment.</p> 
<?php else : ?> 

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

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

     <p>Logged in as <a href="<?php echo get_option('siteurl'); ?>/wp-admin/profile.php"><?php echo $user_identity; ?></a>. <a href="<?php echo wp_logout_url(get_permalink()); ?>" title="Log out of this account">Log out &raquo;</a></p> 

    <?php else : ?> 

     <div> 
      <input type="text" name="author" id="author" value="<?php echo esc_attr($comment_author); ?>" size="22" tabindex="1" <?php if ($req) echo "aria-required='true'"; ?> /> 
      <label for="author">Name <?php if ($req) echo "(required)"; ?></label> 
     </div> 

     <div> 
      <input type="text" name="email" id="email" value="<?php echo esc_attr($comment_author_email); ?>" size="22" tabindex="2" <?php if ($req) echo "aria-required='true'"; ?> /> 
      <label for="email">Mail (will not be published) <?php if ($req) echo "(required)"; ?></label> 
     </div> 

     <div> 
      <input type="text" name="url" id="url" value="<?php echo esc_attr($comment_author_url); ?>" size="22" tabindex="3" /> 
      <label for="url">Website</label> 
     </div> 

    <?php endif; ?> 

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

    <div> 
     <textarea name="comment" id="comment" cols="58" rows="10" tabindex="4"></textarea> 
    </div> 

    <div> 
     <input name="submit" type="submit" id="submit" tabindex="5" value="Submit Comment" /> 
     <?php comment_id_fields(); ?> 
    </div> 

    <?php do_action('comment_form', $post->ID); ?> 

</form> 

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

私はthis質問を読んではなく解決策が何であるかを理解していません。 <?php do_action('comment_form', $post->ID); ?>を期待どおりに動作させるにはどうすればよいですか?

UPDATE:

これは私のsingle.php、あなたが見るように、$postは問題があることができるか分からないように設定されています

<?php get_header(); ?> 

<nav> 
    <?php wp_nav_menu(array('menu' => 'Main Nav Menu')); ?> 
        </nav> 

<div id="main-content"> 

    <div class="post-bg-single"> 


<?php if (have_posts()) : while (have_posts()) : the_post(); ?> 

    <div <?php post_class() ?> id="post-<?php the_ID(); ?>"> 


     <div class="post-title-single"><h2><?php the_title(); ?></h2></div> 
     <h5 class="date-single">Posted on <?php the_time(get_option('date_format')); ?></h5> 

     <div class="separator-up-single"></div> 


     <div class="thumbnail-single"><?php 
      if(has_post_thumbnail()){ 
       echo get_the_post_thumbnail(); // or just simply, the_post_thumbnail() 
      } 
     ?></div> 

     <div class="entry"> 

      <?php the_content(); ?> 

     <h5 class="expand">Expand post area</h5> 
     <!-- <h5 class="print">Printable version</h5> --> 

     </div> 

     <div class="separator-down"></div> 

     <h5 class="categories">Categories: <?php the_category(', ') ?></h5> 
     <h5 class="tags"><?php the_tags('Tags: ', ', ', '<br />'); ?></h5> 

     <h5 class="edit"><?php edit_post_link(__('&rarr; Edit post&larr; '), ''); ?></h5> 

    </div> 
</div> 

<h84>Read more:</h84> 

<div id="related-posts"> 
<?php 
$categories = get_the_category($post->ID); 
if ($categories) { 
$category_ids = array(); 
foreach($categories as $individual_category) $category_ids[] = $individual_category->term_id; 

$args=array(
    'category__in' => $category_ids, 
    'post__not_in' => array($post->ID), 
    'showposts'=>4, // Number of related posts that will be shown. 
    'caller_get_posts'=>1 
); 
$my_query = new wp_query($args); 
if($my_query->have_posts()) { 
    echo ' 
    <ul>'; 
    while ($my_query->have_posts()) { 
     $my_query->the_post(); 
    ?> 

     <?php $bg_image = post_thumb(get_the_post_thumbnail());?> 


     <a href="<?php the_permalink() ?>"><div class="post-bg-archive" style="background: #777777 url(<?php echo $bg_image;?>);"> 

     <div id="title-bg"> 
      <div class="transparency"></div> 
      <div class="archive-title"><h10><?php the_title(); ?></h10></div> 
     </div> 

</div></a> 

    <?php 
    } 
    echo '</ul>'; 
} 
} 
?> 
</div> 

<div class="comments-bg"> 
<?php comments_template(); ?> 
</div> 
<?php endwhile; endif; ?> 

<?php get_sidebar(); ?> 

<?php get_footer(); ?> 
+0

'$ post-> ID'をエコーアウトするとどうなりますか?なんらかの理由で間違った価値があるはずです。投稿したコードには$ postの設定に関する情報が含まれていないため、現在のコードから解決策を見つけることはできません。 $ postがいつ設定されるのか、いつ変更されるのかを見るためにコード構造をさらに調べることをお勧めします。 – mrtsherman

+0

質問を更新しました... – rlesko

+0

代わりに 'get_the_ID()'を使用するとどうなりますか? – mrtsherman

答えて

3

新しいWP_Queryそれ、を行うと新しい$ post変数を新しいクエリで上書きします。

get_posts()を試して、クエリを書き直すか、wp_reset_query()を追加してください。 comments_template()を呼び出す直前。

wp_reset_query();それを適切に表示する最速の方法でしょう。

+0

'wp_reset_quesry();'をどこに追加しますか? '

'の直前ですか?また、リセット後に '$ post'を再度設定しなければならない場合は、どこでどのコードを使用するか教えてください。 [ちょうどあなたが知っている、私はPHPの初心者です。] – rlesko

+1

'<?php wp_reset_query(); comments_template(); ?> ' これはうまくいくはずです。もう一度$ postを設定する必要はありません。 :) – CookiesForDevo

関連する問題