web-dev-qa-db-ja.com

静的フロントページでthe_excerpt()を使用して「続きを読む」リンクを作成する方法を教えてください。

静的フロントページを使用するWebサイトに取り組んでいます。最新のブログ記事も1つ表示されます。これは、ページを作成してカスタムページテンプレートを使用することによって実現されました。

時々、ブログ投稿が長すぎるので、私はより多くのタグを必要とせずに自動的にそれを短くするためにthe_excerptを使いたいです。

ここまでは順調ですね。しかし、the_excerptは実際には "続きを読む"リンクを作成しません。これはかなり一般的な問題です。

<?php
function new_excerpt_more($more) {
    global $post;
    return '... <a href="'. get_permalink($post->ID) . '">continue reading</a>.';
}
add_filter('excerpt_more', 'new_excerpt_more');
?>

functions.phpファイルに。

私は実際にこのコードを他のサイトで問題なく使用していますが、何らかの理由でこのケースではうまくいきません。私の最初の推測は、それが静的ページで呼び出されているからだと思いました。

ウェブサイトは http://stuandjessproductions.com です。テーマはQODEによるCentralです、そして私はカスタム子テーマを使用しています。

_編集_

要求に従ってテンプレートページからコードを追加します。これはページ全体ではなく、むしろニュース記事に関連する部分だけです。

<?php $query = "showposts=1&orderby='date'"; query_posts($query);?>
<?php if(have_posts()) : while ( have_posts() ) : the_post(); ?>
    <a href="<?php the_permalink();?>"><?php the_post_thumbnail('home'); ?></a>
    <div class="overlay">Latest News</div>
    <h4><a href="<?php the_permalink();?>"><?php the_title(); ?></a></h4>
    <?php the_excerpt(); ?>
<?php endwhile; ?>
<?php endif; ?>
5
convoke

投稿編集ページの 抜粋 ボックスに任意のテキストを入力すると、the_excerpt()関数は短い説明の最後に を追加しません または ... 続きを読む 抜粋 が空に設定されている場合にのみ含まれます。これはバグではなく、機能です。

解決策は、excerpt_moreフィルタを使用せずにread moreを返し、the_excerptフックを使用することです。しかし、excerpt_moreを空に設定して、二重続きが表示されないようにする必要があります。だから、あなたが必要とするコード -

function new_excerpt_more($more) {
    return '';
}
add_filter('excerpt_more', 'new_excerpt_more', 21 );

function the_excerpt_more_link( $excerpt ){
    $post = get_post();
    $excerpt .= '... <a href="'. get_permalink($post->ID) . '">continue reading</a>.';
    return $excerpt;
}
add_filter( 'the_excerpt', 'the_excerpt_more_link', 21 );

上記のコードはthemes functions.phpファイルに行くことができます。

9
Shazzad