web-dev-qa-db-ja.com

the_excerpt()、get_the_excerpt()およびthe_content()がすべて「the Loop」を終了させる

The_excerpt()を呼び出す前に、the_permalink()が正しいものを表示します。その後は、そうではありません...

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

私は自分が作成したページに適用できる "blog"というテンプレートとして定義した "blog.php"というページを持っています(そのため彼らはブログリストページを持つことができます。しかし、これはさまざまな理由でなくなった解決策です。

それはちょうどうまくいっていました、しかし今(私がそれを書いた1ヵ月後)それは突然働かなくなりました。私は(私が思うに)問題をthe_excerpt()呼び出しに狭めました。その前はパーマリンクはきれいに表示されていましたが、その後はblog.phpページへのパーマリンクが表示されていました。 blog.phpテンプレートを使用するページ(そのページのコンテンツを吐き出し、そのページがThe Loopの最後の投稿であるかのように停止します)。

これは、 "the_excerpt()"を "the_content()"または "get_the_excerpt()"に置き換えた場合にも発生します。

2
cmcculloh

「Facebook Comments for WordPress」プラグインをインストールしました。このプラグインはthe_content();にフィルタを適用します。フィルタにはwp_reset_query();という行が含まれています。これをコメントアウトすることで問題が解決します(ただし、これではクライアントはプラグインを更新できなくなるため、これは次善策です)。

1
cmcculloh