WordPressの標準テーマは、トップ(ホーム)ページで投稿記事の全文が表示される仕様になっています。ホームページに複数(デフォルトでは10)の記事(投稿)を表示させるようにしている場合、記事がある程度長いと縦に(非常に)長いページとなってしまいます。
カテゴリーページでも、同様に全文が表示されます。カテゴリーページでは、要約(序文の抜粋)を表示した方が、ユーザーが記事の一覧を見やすくなります。
WordPress 標準テーマ トップページの投稿を全文から要約に変更する設定
WordPress 標準テーマのホーム、カテゴリー、アーカイブなどの一覧表示ページで、記事の全文ではなく、序文を抜粋して表示する設定手順を以下に紹介します。
作業前の準備
WordPressの標準テーマの機能追加は、テンプレートファイルの編集を行う作業が比較的多くあります。子テーマを作成して、利用すると保守性、作業効率が良くなります。
編集テンプレートファイルを子テーマに設置
本作業は、テンプレートファイル content.php を編集します。Twenty Fifteenでは、テーマのディレクトリ(wp-content/themes/twentyfifteen)の下にあるcontent.phpをコピー(ダウンロード)して、子テーマのディレクトリーの下にペースト(アップロード)します。
Twenty Sixteenの場合、content.phpは、テーマのディレクトリーの下のサブディレクトリー template-parts にあります。子テーマのディレクトリーの下にtemplate-partsを作成して、その下に親テーマのcontent.phpをコピーしペーストします。
Twenty Seventeenの場合、テーマディレクトリーの下にある2つのサブディレクリー(twentyseventeen/template-parts/post)にcontent.phpがあります。子テーマのディレクトリーの下にtemplate-partsを作成して、さらにその下にサブディレクトリーpostを作成します。そして、作成した子テーマのサブディレクトリー(twentyseventeen-child/template-parts/post)の下にcontent.phpをアップロードします。
テンプレートファイル (content.php) の編集
WordPressの管理メニュー項目「外観」から「テーマの編集」を選択します。子テーマの場合は、Twenty Fifteenではページ右側のテーマファイルのリストに表示されているcontent.phpをクリックします。Twenty Sixteenでは、テーマファイルのリストの中からtemplate-partsをクリックするとcontent.phpが表示されます。Twenty Seventeenの場合は、template-partsをクリック、続いてpostをクリックするとcontent.phpが表示されます。
表示される content.php の中に以下の様な記述箇所があります。
<?php
/* translators: %s: Name of current post */
the_content(
sprintf(
__( ‘Continue reading<span class=”screen-reader-text”> “%s”</span>’, ‘twentyseventeen’ ),
get_the_title()
)
);wp_link_pages(
array(
‘before’ => ‘<div class=”page-links”>’ . __( ‘Pages:’, ‘twentyseventeen’ ),
‘after’ => ‘</div>’,
‘link_before’ => ‘<span class=”page-number”>’,
‘link_after’ => ‘</span>’,
)
);?>
</div><!– .entry-content –>
この部分は、the_content() ファンクションによって、それぞれの投稿の全文(フルコンテント)を表示を行う箇所です。
この部分に条件分岐を追加して、個別投稿の場合は全文表示、それ以外のページ(例:トップページやカテゴリーページ)では、抜粋文を表示するようにコードを変更します。変更コードは以下の様になります。
<div class="entry-content"> <?php if ( is_single( ) ) : /* translators: %s: Name of current post */ the_content( sprintf( __( 'Continue reading<span class="screen-reader-text"> "%s"</span>', 'twentyseventeen' ), get_the_title() ) ); wp_link_pages( array( 'before' => '<div class="page-links">' . __( 'Pages:', 'twentyseventeen' ), 'after' => '</div>', 'link_before' => '<span class="page-number">', 'link_after' => '</span>', ) ); else : /* translators: %s: Name of current post */ the_excerpt( sprintf( __( 'Continue reading<span class="screen-reader-text"> "%s"</span>', 'twentyseventeen' ), get_the_title() ) ); wp_link_pages( array( 'before' => '<div class="page-links">' . __( 'Pages:', 'twentyseventeen' ), 'after' => '</div>', 'link_before' => '<span class="page-number">', 'link_after' => '</span>', ) ); endif;?> </div><!-- .entry-content -->
一つ前に紹介した投稿の全文表示設定コードの部分を、上のコード(個別投稿で全文表示、それ以外は抜粋表示)に入れ換えます。
コードの変更に仕方が分かりづらい場合は、YouTubeの説明をご覧下さい。(後ほど、投稿予定です。)
変更内容を確認の上、「ファイルを更新」ボタンを押してテンプレートファイルを保存します。
ホームページでの表示確認
ブラウザーでホームページを表示して、確認します。設定が適切に行われていれば、以下の様に記事タイトルの下に、記事が序文の抜粋、その下に「続きを読む」と表示されます。(使用テーマ:Twenty Seventeen)
抜粋表示文字数の変更
抜粋で表示する文字数を変更(増やしたり減らしたり)する場合は、以下のコードをfunctions.php に追加します。
function twenty_seventeen_excerpt_length( $length ) { return 175; } add_filter( 'excerpt_length', 'twenty_seventeen_excerpt_length', 999 );
175の部分が抜粋で表示する文字数です。お好みに合わせて、数を設定変更して下さい。
上の設定を加えた場合は、抜粋文の文字数が多くなります。(175文字)
YouTube
本記事の内容をYouTubeで紹介しております。コードの設定変更方法については、ビデオの方で具体的な作業方法を説明しております。
突然のコメント失礼いたします。
大変分かりやすい記事、ありがとうございます。無事に全文表示から抜粋表示にできました!
しかし,カテゴリーを開いた際、抜粋表示にはなっているのですが、タイトルの上に「 array( ‘before’ =>’ 」という文字が全記事の上に表示されてしまい、消えません。一体どこで間違えてしまっているのでしょうか?
無知な質問ですみません、よろしくお願い致します。
はじめまして。
コメントありがとうございます。無事に抜粋表示できたとの事、何よりです。
カテゴリーを開いた際の現象については、お書き下さった内容だけでは、原因を絞り込むことは難しいです。頻発するような現象であれば、その現象が発生している原因を直ぐに特定することができる場合もありますが、そうでない場合には、原因と考えられるような事項を絞り込んでいくような作業が必要となります。
ご利用のテーマをお知らせ頂ければ、私の環境でも試してみることはできます。ただし、それで原因が分かるかどうかはやってみないと分かりません。
ご返信ありがとうございます。
後日色々試しましたら全く別の箇所から派生して起こっていたバグでした。。
バグの解消後、ブロギングライフさんの記事通りcontent.phpを書き換えたら無事に綺麗な抜粋表示に変更できました。
返信のお時間をいただいてしまい、すみません。記事、大変参考になりました!ありがとうございました。
更新情報のご連絡、ありがとうございます。無事に抜粋表示されるようになったとの事、良かったですね!
こんにちは。わかりやすい記事をありがとうございます。twenty fifteenについて、さらに質問があります。省略前のデフォルトトップページの各記事の下に、コメントを残す、というリンク付きテキストがあると思います。こちらの文言を変更する、あるいは、いいねボタンをを追加設置する方法かあればぜひ合わせてご教示頂きたいです。よろしくお願いします。
はじめまして。コメントありがとうございます。
「コメントを残す」というリンク付きテキストの文言を変更する方法は、現時点では存じません。
いいねボタンに関しては、WordPress サイトの記事下に絵文字 リアクションボタンを設置する方法という記事を投稿しました。
リアクションボタンではなく、いいねだけのボタンをご希望される場合は、Jetpackなどのプラグインでお好みに合ったものを選んでご利用される事をお勧め致します。
早速のご返信ありがとうございます。
承知いたしました。
別ページの子テーマ作成についても質問が出て参りました。
手順の通り行い、childが外観>テーマにちゃんと出てきました。
ただし、親テーマのように画面が反映されず、画面の上にこのような文字が出てきました。
Warning: Use of undefined constant �ewp_enqueue_scripts�f – assumed ‘�ewp_enqueue_scripts�f’ (this will throw an Error in a future version of PHP) in /home/xs770732/thmkkcyiht.com/public_html/wp-content/themes/twentyfifteen-child2/functions.php on line 2
Warning: Use of undefined constant �emy_theme_enqueue_styles�f – assumed ‘�emy_theme_enqueue_styles�f’ (this will throw an Error in a future version of PHP) in /home/xs770732/thmkkcyiht.com/public_html/wp-content/themes/twentyfifteen-child2/functions.php on line 2
解決方法について、よろしければご教示くださいますと嬉しく存じます。よろしくお願いいたします。
お返事ありがとうございます。
子テーマ作成に関してのご質問については、できましたら、以下の該当する記事の方にコメントをして頂けますでしょうか?
WordPress 子テーマの特長、作成方法と利用例
とりあえず、私の環境で試してみたのですが、特にエラーメッセージなどなく表示されました。
作業の内容などを実際に行ったYouTubeの動画を以下に添付致します。
YouTubeの掲載ありがとうございます。
なお、ご連絡頂きました通り、先のコメントは該当ページのコメント欄にて再度お送りさせていただきました。
ご確認の程、よろしくお願いいたします。
コメント、該当ページの方にご投稿くださいまして、ありがとうございました。
要約表示もうまくいきました!ご対応くださりありがとうございました。
ホッとしました・・・。
ところでちなみになのですが、要約表示に投稿ページ内の画像が表示されるようにする方法はありますでしょうか。
位置やサイズも調整できるとなおのこと望ましいです。
要約表示も無事にうまくいったとの事、本当に良かったですね!
「要約表示に投稿ページ内の画像が表示されるようにする」とおっしゃるのは、ホームページ、カテゴリー・タグ一覧ページで、記事タイトル、要約に加えて、記事内の画像を表示したいと言う事でしょうか?
もしもその様な意味でしたら、投稿記事編集画面の右側に表示されるサイドバー内の「アイキャッチ画像」に記事内の画像を設定する事で表示されると思います。
クラシックエディターの場合:
ブロックエディターの場合:
違う意味でしたら、お知らせ下さい。
ご教示くださいまして、ありがとうございます。
アイキャッチ画像を選択すれば、ご解説の通り表示することができました!
ただ実際にやってみますと、想像よりも画像表示が大きく反映されました。調整を試みるもできなかったので、いったん全記事で実行するかどうかは検討中です。
いずれにしましてもまた一つ知識が増えまして、ありがたい限りです。
お礼申し上げます。
お返事ありがとうございます。画像のサイズは変更できます。ただし、どの様な表示にしたいかにもよります。
例えば、表示サイズを小さくしたいという事であれば、サイズを小さくする事はできます。以下が例になります。