“続きを読む”、”Read More” をページの先頭へ移動させる
<!-- more -->
タグによって "続きを読む(Read More)" を表示させると、
そのリンクはそのページの more タグを挿入した位置へのリンクになります。
ページの先頭から見せたい場合には、リンクがページのトップになるように工夫する必要があります。
"続きを読む" を先頭へのリンクにする手順
functions.php ファイル内で、次のコードのように the_content_more_link
フィルタにフックする関数を用意します。
the_content_more_link
フィルタは "続きを読む" のリンクを出力するときに呼び出され、出力するテキストを修正することができます。
function themename_modify_readmore()
{
return '<a href="' . get_permalink() . '" class="more-link">続きを読む</a>';
}
add_filter('the_content_more_link', 'themename_modify_readmore');
return
によって戻されたテキストがそのまま <!--more-->
に置き換えられます。
ここではページのトップに移動するようにしたいので、対象のページのリンクをそのまま出力します。
Codex のコードは非効率
続きを読むのリンクを変更する方法は Codex(WordPress のフォーラム) の
"「続きを読む」のカスタマイズ - Codex"
にも掲載されています。functions.php
に次のようなコードを追加して、アンカーテキストの中にある id を指定するテキストを取り除きます。
function custom_readmore_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', 'custom_readmore_link');
ただしこの方法は非効率です。文字列の中身を 1 つずつ確認して、該当の文字列を入れ替える処理が含まれています。 一般に、文字列の確認と、置換(削除と挿入)は比較的負荷が大きい処理です。
負荷が大きいとは言っても、リンクのテキスト量は大したことがありませんから、実質的な処理コストは小さくなります。 ただ、わざわざこの方法で実現する必要はないでしょう。