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 »</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()"に置き換えた場合にも発生します。
「Facebook Comments for WordPress」プラグインをインストールしました。このプラグインはthe_content();
にフィルタを適用します。フィルタにはwp_reset_query();
という行が含まれています。これをコメントアウトすることで問題が解決します(ただし、これではクライアントはプラグインを更新できなくなるため、これは次善策です)。