当サイト、Codex 日本語版は今後積極的な更新は行わない予定です。後継となる新ユーザーマニュアルは、https://ja.wordpress.org/support/ にあります。
万が一、当サイトで重大な問題を発見した際などは、フォーラムWordSlack #docs チャンネルでお知らせください。</p>

「続きを読む」のカスタマイズ

提供: WordPress Codex 日本語版
2009年11月3日 (火) 18:07時点におけるMizuno (トーク | 投稿記録)による版 (「続きを読む」 テクニック)

移動先: 案内検索

WordPress をセットアップすると、ホームページには投稿の抜粋が表示されます。訪問者にタイトルやリンクしてもらい、投稿の続きを読んでもらいたいと思いますよね? WordPress ではこれが簡単にできますし、カスタマイズもできます。

抜粋とは

WordPress では、抜粋を表示する二通りの方法があります。一つ目は、the_content()the_excerpt() に置き換える方法です。Administration > Write > Post サブパネルで入力した抜粋が表示されます。あるいは、投稿の最初の 55 文字(訳注:日本語の場合はWP Multibyte Patchを参照 --Mizuno 2009年11月2日 (月) 23:01 (UTC))が表示されます。訪問者は、タイトルをクリックして読み進むことができます。

the_content() はそのままにしておき、投稿の区切りに more クイックタグを挿入する方法がよく用いられています。

クイックタグは、Administration > Write > Post サブパネルで編集ウィンドウの上部にある小さなボタンです。太字、イタリック、リンク等、そして有名な more があります。投稿で、抜粋にしたい部分の最後にカーソルを置き、more クイックタグを押してください。下のように、カーソルの場所にコードを挿入します。

and I told him that he should get moving or I'd be
on him like a limpet.  He looked at me with shock on 
his face and said

<!--more-->

投稿が続きますが、non-single/non-permalink ページ、例えばアーカイブ、カテゴリー、トップページ、検索結果等では、more がある地点までが表示されます。

「続きを読む」テクニック

the_content() には、以下のパラメータがあります。

<?php the_content( $more_link_text , $strip_teaser, $more_file ); ?> 

$more_link_text は、"Read More" のようなテキストを設定します。2 番目の $strip_teaser は、"more" リンクを隠す (TRUE) か表示する (FALSE) かを設定します。 デフォルト値は FALSE で、リンクが表示されます。最後の $more_file は "Read More" がリンクするファイルを変更したい場合に設定します。デフォルトでは、現在の投稿にリンクします。

リンクを取り除くには、

  • index.phpthe_content(); を下のように変更する。 (第二引数が制御している)
the_content('',FALSE,'');
  • 投稿テキストの <!--more--> の直後に <!--noteaser--> を書き込む。

続きへジャンプするか、ページの先頭へ移動するか

デフォルトでは、Read More リンクをクリックすると、ページが読み込まれ、投稿の <--more--> タグが設定された場所へジャンプします。ジャンプさせたくない場合は、テーマの functions.php で以下のコードを使用してください。

function remove_more_jump_link($link) { 
$offset = strpos($link, '#more-');
if ($offset) {
$end = strpos($link, '"',$offset);
}
if ($end) {
$link = substr_replace($link, '', $offset, $end-$offset);
}
return $link;
}
add_filter('the_content_more_link', 'remove_more_jump_link');

バージョン 2.7.1 以前では、wp-includes/post-template.php の以下の行を編集することで、デフォルトから変更することができます。 (注意: WP 2.1 以前では、このコードは wp-includes/template-functions-post.php にあります)

(注意: WordPress をアップグレードすると、このファイルは上書きされます。アップグレード後にもう一度変更するメモをしておきましょう。)

$output .= ' <a href="'. get_permalink() ."#more-$id\">$more_link_text</a>";

to

$output .= ' <a href="'. get_permalink() ."\">$more_link_text</a>";

or

$output .= ' <a href="'. get_permalink() .'">$more_link_text</a>';

Designing the More Tag

Seeing that you know how it works, now look at how we can make this little invitation to continue reading your post be more inviting.

By design, the_content() tag includes a parameter for formatting the <!--more--> content and look, which creates a link to "continue reading" the full post.

By default, it looks like this:

and I told him that he should get moving or I'd be on him like a limpet. He looked at me with shock on his face and said more...

If you want to change the words from more.... to something else, just type in the new words into the tag:

<?php the_content('Read on...'); ?>

Or get more sophisticated and make it fun:

<?php the_content('...on the edge of your seat? Click
here to solve the mystery.'); ?>

You can style the text in the tag, too.

<?php the_content('<span class="moretext">...on the edge of
your seat? Click here to solve the mystery.</span>'); ?>

Then set the moretext class in your style.css style sheet to whatever you want. Here is an example of the style which features bold, italic text that is slightly smaller than the default text and uses the font-variant: small-caps to force the text into small capital letters. :

and I told him that he should get moving or I'd be on him like a limpet. He looked at me with shock on his face and said ...On the Edge of Your Seat? Click Here to Solve the Mystery.

Some people do not want the text and prefer to use an extended character or HTML character entity to move the reader on to the full post.

<?php the_content('&raquo; &raquo; &raquo; &raquo;'); ?>

Would look like this:

and I told him that he should get moving or I'd be on him like a limpet. He looked at me with shock on his face and said » » » »

There is another parameter in the_content() template tag which will include the title of the post in the more text. Through the use of the_title() tag, the title of the article is included:

<?php the_content("...continue reading the story
called " . get_the_title('', '', false)); ?>
and I told him that he should get moving or I'd be on him like a limpet. He looked at me with shock on his face and said ...continue reading the story called A Tale That Must Be Told

Having a custom text for each post

Although the_content() is usually called from the template with a standard text as described above, it is possible to have an individual text for certain posts. In the visual editor, simply write <!--more Your custom text -->.

So, you may have something like this:

<!--more But wait, there's more! -->

Adding An Image

The design possibilities with CSS are practically unlimited, and WordPress allows you to use images in many of their Template Tags, including the more tag. To add an image, there are two ways to do it. Begin with the most simple -- listing it in the_content() template tag.

This examples features the image of a leaf after the "Read More" text.

<?php the_content('Read more...<img src="/images/leaf.gif" 
alt="read more" title="Read more..." />'); ?>

Notice that the code uses an ALT and TITLE in the image tag. This is in compliance with accessibility and web standards, since the image is both an image and a link. Here is what it might look like.

and I told him that he should get moving or I'd be on him like a limpet. He looked at me with shock on his face and said Read More...   leaf

You could even add a style to the image and more tag, as mentioned above, to style it even more. To use the image without the "Read More" text, just delete the text.

The second example uses the CSS background image. We have described how to use style classes in the above examples. This is a little tricker. The container's style must be set to allow the background image to show out from behind the text. If you were to use the above example as a background image, the style.css style sheet for this might look like this:

.moretext {
   width: 100px; 
   height: 45px; 
   background:url(/images/leaf.gif) no-repeat right middle;
   padding: 10px 50px 15px 5px}

The 50px padding against the right margin should make sure the text is pushed over away from the image as to not overlap it. The height ensures that the container will expand wide enough so the image is visible within the container, since a background image isn't "really there" and can not push against the container's borders. You may have to experiment with this to fit the size and shape of your own image.

You have gotten the basics. From here, it is up to your imagination.

How to use Read More in Pages

Please remember that the "Read More" tag is used only on the Home page which shows the latest posts. It does not work in "Pages". If you want to turn it on in Pages too for showing a set of partial posts, use the following code inside the loop for the dynamic content:

<?php
global $more;
$more = 0;
?>
//The code must be inserted ahead of the call to the content

<?php the_content('Continue Reading'); ?>

See More tag ignored on static front page forum topic.