WordPressのトップページに表示される最新記事。このテキスト部分の表示方法について、ちょっと調べたのでメモしておこうと思います。
今回はトップページテーマ(index.php)内の最新記事のテキスト部分について。
index.php
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
(この部分に、タイトル、日時、カテゴリ表示、記事の一部表示)
<?php endwhile; ?>
大抵の場合、上記の「記事の一部表示」のテキスト部分にかかれているのは以下の記述です。
index.php
<?php the_content('続きを読む'); ?>
私の今のテーマでは、この部分に記事の一部(<!--more-->のタグの前の部分)が表示されるようになっています。
トップページの最新記事一覧のテキスト表示方法(目次)
1.「続きを読む」を消す
「続きを読む」を別な文字に変える方法ではなく、それ自体を消してしまう方法です。
記事抜粋やアイキャッチ画像全体にリンクする時は、続きを読むのリンクは無いほうが扱いやすくなります。
index.php
<?php the_content('',false,''); ?>
続きを読むの値をfalseにするという事で「続きを読む」は消えます。
消してしまうとリンクもなくなります。
文字数を決めて記事のテキストを表示
トップページの最新記事一覧では、決めた文字数を表示したいという時があります。表示される記事を決めた文字数にすれば、レイアウト的にも扱いやすくなります。
以前、制作したサイトでもそのような事があったのですが、随分前の事で…。今回は忘れないように、このブログに書いておきます。
index.php
<?php
if(mb_strlen($post->post_content, 'UTF-8')>120){
$content= mb_substr(strip_tags($post->post_content), 0, 120, 'UTF-8');
echo $content.'続きを読む';
}else{
echo strip_tags($post->post_content);
}
?>
参考サイト:WordPress - 投稿の本文を文字数制限、HTMLタグを除外、特定のHTMLタグを残す|及川WEB室
120のところが、抜き出す文字数です。
・120文字より大きい場合は、120文字抜き出し「続きを読む」をつける
・そうでなければ、全文表示
となります。
特定のタグを残したい場合については、参考サイトに詳しく載っていますので、確認してみてください。
他にも以下のサイトに指定数の文字を抜き出す方法について、丁寧にかかれています。
参考サイト:【WordPress】投稿本文の文字数を制限してテキストのみで取得する方法(wp_trim_wordsが最も正確) | DISPLAY
以前制作したサイトでは、これに加えて特定カテゴリのみ、という表示も書いた気がしますが、随分前ですし、また後ほど書こうと思います。
記事の一部(<!--more-->タグの前)を表示する
今まで使っていた the_content() ですが、これとは別に
get_the_content() という方法もあります。
簡単に書くと、get_the_content() は the_content()で加工する前のテキストデータです。
index.php
<?php
$content = apply_filters( 'the_content', get_the_content() );
$content = str_replace( ']]>', ']]>', $content );
?>
<?php echo $content; ?>
参考サイト:投稿の本文を取得・表示する | The WordPress Press
get_the_content() を使って、the_content()と同じ結果(表示)にする方法です。
参考サイトに詳しく書かれていますが、get_the_content() ではhtmlタグなどがそのまま表示されてしまうため、このように書きます。
この記述、参考サイトで確認するとCodexに載っていました。
テンプレートタグ/the content - WordPress Codex 日本語版
the_content()と同じ結果(表示)なら、the_content()を書けばいいんじゃないと言われそうですが、単に私が忘れそうなのでメモしておきます。
ちなみにget_the_content()で「続きをよむ」を消したい場合も()内の'',false,''を書きます。
記事の一部テキストのみ(<!--more-->タグの前)を表示する
index.php
<?php
$content = get_the_content('',false,'');
$content = wp_strip_all_tags( $content );
?>
<?php echo $content; ?>
参考サイト:WordPressで投稿の本文のテキストだけを取得する方法 | WWWクリエイターズ
参考サイトを元に「続きを読む」を消す
を入れました。
参考サイトでは、ショートコードを消す
もかかれていますが、私は抜粋部分にショートコードを使ってないので、省略しています。
今回は、トップページのindex.phpとして書いていますが、categoryやtagページでも同様に使えます。
今回、このブログのテーマを少し修正しようと、久々にテーマを調べていました。6年前の知識では、あやふやな事が多く、細かな部分やテーマやSEO関連も色々変わってきているようで…。
そんな訳で、無理せずゆっくりカスタムしていこうと思っています。
どこまで追いつけるか判りませんが、出来る範囲でボチボチやっていこうと思っています。
2024年10月追記:
上の「記事の一部テキストのみ(タグの前)を表示する」だと、文の改行は無視され表示されますが、改行もそのまま表示したい場合は以下となります。
index.php
<?php
$content = get_the_content('',false,'');
$content = wp_strip_all_tags( $content );
$content = apply_filters( 'the_content', $content );
$content = str_replace( ']]>', ']]>', $content );
?>
<?php echo $content; ?>
コメント
トラックバックURL