web-dev-qa-db-ja.com

静的フロントページに最近の投稿抜粋を表示する

下部に最近の投稿を含む静的フロントページを表示しようとしています。具体的には、動的フロントページがある場合にthe_content()によって返されるように、最近の投稿からの抜粋だけを表示したいと思います。これまで私が管理してきたのは、最近の投稿でフロントページを表示することですが、抜粋だけではなく投稿の完全な内容を表示しています。カテゴリページとアーカイブページに表示される抜粋と一致するようにしたいので、自分の抜粋を生成したくはありません。

現時点では、これは私のfront-page.phpファイル(の簡易版)です。

<?php get_header(); ?>
<?php the_post(); ?>

<!-- This block is modified slightly from page.php -->
<a href="<?php bloginfo('url'); ?>">Home</a> &gt; <?php the_title(); ?>
<h2><?php the_title(); ?></h2>
<?php the_content(); ?>

<div id="recent_posts">
<h2>Latest entries</h2>
<?php
$recent_posts_query = new WP_Query(array('post_type' => 'post', 'posts_per_page' => 5));

while ($recent_posts_query->have_posts())
{
$recent_posts_query->the_post();
?>
<div class="post">
<h3><?php echo the_title(); ?></h3>
<p>by <?php the_author(); ?></p>
<?php the_content(); ?>
</div>
<?php
}
?>
</div>

<?php get_footer(); ?>

the_content()に抜粋だけを返させるにはどうすればいいですか? (私の投稿のほとんどはそれらの中に<!--more-->タグを持っています、そしてそれらが短い投稿であるので私は完全に表示したくないものです)

編集:the_excerpt()を使用してみましたが、ポストが<!--more-->タグを含んでいても自動生成された抜粋を返します。

1
Micheal Johnson

私は解決策を見つけました。 https://codex.wordpress.org/Function_Reference/the_content#Overriding_Archive.2FSingle_Page_Behavior に従って、追加する必要があります

global $more;
$more = 0;

the_content()を呼び出す前に。だから今私の内側のループは読みます:

<?php
$recent_posts_query = new WP_Query(array('post_type' => 'post', 'posts_per_page' => 5));

while ($recent_posts_query->have_posts())
{
$recent_posts_query->the_post();
?>
<div class="post">
<h3><?php echo the_title(); ?></h3>
<p>by <?php the_author(); ?></p>
<?php
global $more;
$more = 0;
the_content();
?>
</div>
<?php
}
?>
1
Micheal Johnson