“続きを読む”、”Read More” をページの先頭へ移動させる

WordPress のロゴ

<!-- 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 つずつ確認して、該当の文字列を入れ替える処理が含まれています。 一般に、文字列の確認と、置換(削除と挿入)は比較的負荷が大きい処理です。

負荷が大きいとは言っても、リンクのテキスト量は大したことがありませんから、実質的な処理コストは小さくなります。 ただ、わざわざこの方法で実現する必要はないでしょう。