Vorige bericht wordt weergegeven na het verzenden van een reactie

Wat is er mis met mijn code dat het resulteert in een pagina naar het vorige bericht na het indienen van een opmerking?

This is the webpage. You may try if you want.

Dit is de code van 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() ) : ?>

<?php comments_number('No Responses', 'One Response', '% Responses' );?>

<div class="navigation"> <div class="next-posts"><?php previous_comments_link() ?></div> <div class="prev-posts"><?php next_comments_link() ?></div> </div>
    <?php wp_list_comments(); ?>
<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 ?>

Comments are closed.

<?php endif; ?> <?php endif; ?> <?php if ( comments_open() ) : ?> <div id="respond">

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

<div class="cancel-comment-reply"> <?php cancel_comment_reply_link(); ?> </div> <?php if ( get_option('comment_registration') && !is_user_logged_in() ) : ?>

You must be logged in to post a comment.

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

Logged in as <?php echo $user_identity; ?>. Log out »

<?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'"; ?> /> </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'"; ?> /> </div> <div> <input type="text" name="url" id="url" value="<?php echo esc_attr($comment_author_url); ?>" size="22" tabindex="3" /> </div> <?php endif; ?> <!--

You can use these tags: <?php echo allowed_tags(); ?>

--> <div> </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 ?>

I read this question but don't understand what the solution is. What do I do to get <?php do_action( 'comment_form', $post->ID ); ?> to behave as expected?

UPDATE:

This is my single.php and as you see, $post is set so don't know what the issue can be:

<?php get_header(); ?>



<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">

<?php the_title(); ?>

</div>
Posted on <?php the_time(get_option('date_format')); ?>
<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(); ?>
Expand post area
<!--
Printable version
--> </div> <div class="separator-down"></div>
Categories: <?php the_category(', ') ?>
<?php the_tags('Tags: ', ', ', '
'); ?>
<?php edit_post_link(__('→ Edit post← '), ''); ?>
</div> </div> Read more: <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 ' '; } } ?> </div> <div class="comments-bg"> <?php comments_template(); ?> </div> <?php endwhile; endif; ?> <?php get_sidebar(); ?> <?php get_footer(); ?>
0
Wat gebeurt er wanneer u e-mail $ post-> ID ? Het moet om de een of andere reden de verkeerde waarde hebben. De code die je hebt gepost bevat geen informatie over het instellen van $ post, dus we kunnen de oplossing niet vinden in je huidige code. Ik zou aanraden verder in de codestructuur te kijken om te zien wanneer $ post wordt ingesteld en wanneer het verandert.
toegevoegd de auteur mrtsherman, de bron
Wat als u in plaats daarvan get_the_ID() gebruikt?
toegevoegd de auteur mrtsherman, de bron
De vraag bijgewerkt ...
toegevoegd de auteur rlesko, de bron
Waar zou ik dat gebruiken? In plaats van wat?
toegevoegd de auteur rlesko, de bron

1 antwoord

Wanneer u een nieuwe WP_Query uitvoert, overschrijft u de globale variabele $ post met de nieuwe query.

Of probeer get_posts() en herschrijf de vraag of voeg wp_reset_query() toe; net voor het aanroepen van comments_template ();

wp_reset_query (); zou de snelste manier zijn om het goed weer te geven.

3
toegevoegd
Waar moet ik wp_reset_quesry (); toevoegen? Vlak voor <div class = "comments-bg"> <? PHP comments_template (); ?> </div> ? Ook zou ik $ post opnieuw moeten instellen na de reset en, zo ja, vertel me waar en welke code te gebruiken. [Gewoon zodat je weet dat ik een beginneling ben als het gaat om PHP.]
toegevoegd de auteur rlesko, de bron
<? PHP wp_reset_query (); comments_template (); ?> Dat zou moeten werken. Het is ook niet nodig om $ post opnieuw in te stellen. :)
toegevoegd de auteur CookiesForDevo, de bron