web-dev-qa-db-fra.com

the_excerpt (), get_the_excerpt () et the_content () tuent tous "la boucle"

Avant que j'appelle the_excerpt (), the_permalink () affiche la bonne chose. Après, ça ne va pas ...

            <?php 
            global $query_string;

            //strip out the "pagename=blog" so that the query will grab all of the posts instead of the content of the blog page
            $query_string = preg_replace("/pagename=[a-zA-Z0-9]*/", "", $query_string);
            query_posts( $query_string . "posts_per_page=3" );

            if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
                <li class="post-listing"> 
                        <div class="no-col">
                            <h3><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3> 
                            <p class="meta">Posted on <?php print get_the_date(); ?> by <?php the_author(); ?> in <?php the_category(', ') ?></p>
                        <!--
                        <?php the_permalink(); ?>
                        -->

                            <?php the_excerpt(); ?>
                        <!--
                        <?php the_permalink(); ?>
                        -->

                            <p class="meta"><?php the_tags('') ?></p>
                            <div class="navigation"><a class="alignright" href="<?php the_permalink(); ?>">READ MORE &raquo;</a></div>
                        </div>
                </li> 
            <?php endwhile; else: ?>
                <li><?php _e('Sorry, no posts matched your criteria.'); ?></li>
            <?php endif; ?>

J'ai une page appelée "blog.php" que j'ai définie en tant que modèle nommé "blog" que les utilisateurs peuvent appliquer à une page qu'ils créent (afin qu'ils puissent avoir une page de liste de blogs, je sais qu'il existe probablement un meilleur moyen, mais c’est la solution qui a été adoptée pour diverses raisons).

Cela fonctionnait très bien, mais maintenant (un mois après que je l'ai écrit), il a soudainement cessé de fonctionner. J'ai réduit le problème (je pense) à l'appel the_excerpt (). Le permalien affiche bien avant cela, mais le craps est affiché et affiche plutôt le permalien de la page blog.php ... Je pense que the_excerpt () est en train de tout jeter de "The Loop". Le post actuel qu’il voit devient juste la page qui utilise le modèle blog.php (elle crache le contenu de cette page puis s’arrête comme si cette page était la dernière publication de The Loop).

Cela se produit également si je remplace "the_excerpt ()" par "the_content ()" ou "get_the_excerpt ()"

2
cmcculloh

J'avais installé le plugin "Facebook Comments for WordPress". Ce plugin attache un filtre à the_content();. Le filtre contient la ligne wp_reset_query();. Commenter ceci corrige le problème (c'est néanmoins sous-optimal car, à présent, le client ne sera plus en mesure de mettre à jour le plug-in).

1
cmcculloh