今さら聞けない、WordPressの「続きを読む」のリンクURLから#moreを取り先頭から表示させる方法

「続きを読む」クリックした時の状態が気になっていた、WordPress悪戦苦闘中のローカルブロガー・小梅太郎です。

ブログ記事を<!--more-->を使って「続きを読む」という状態ししている方は多いと思います。

2013_0515_more

この場合、デフォルトのままだと「続きを読む」をクリックすると、表示されたページのURLが、元のパーマリンクの末尾に#more-×××と追加されたものになってしまうんですね。

こんな感じですね。
 http://koumetaro.com/blog/wordpress-pingback-mail.html(本来のURL)
→http://koumetaro.com/blog/wordpress-pingback-mail.html#more-908

これは、何だか1つの記事にパーマリンクが2つできてやな感じですので、追加しないようにしたいです。

更に、「続きを読む」をクリックして表示されるページでは、その続き以降の内容がページに表示されます。

これは好みがあるかもしれませんが、ページの先頭から表示されてもいいのではないかと思いますので、これも何とかしたいですね。

ということで、いつものごとく色々と調べてみました。
ちなみに、現在の環境は、WordPress+テーマTwenty Twelveです。

#moreを取りページの先頭へ移動させる

って、調べ始めると、皆さんだいたい対応済みなんですね。
私が知らなかっただけか…

まあ、気を取り直して、こちらのサイトを参考にさせていただき対応しました。ありがとうございました。
「続きを読む」のカスタマイズ – WordPress Codex 日本語版
WordPressのfunctions.phpに書いておくといいかもしれないコードいろいろ

修正内容としては、functions.phpに次のコードを追加しました。
(すいません、参考サイトの内容そのままです)

/* more-linkの#moreを消す */
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');

ちなみに、このブログでは子テーマを使って修正を加えているのですが、functions.phpに関しては、何やら注意が必要とのことで、そういう時は初心者は無理をしないのが一番ですね。

今回はバックアップをとって、親テーマのfunctions.phpに直接修正を加えました。

ん?プラグインもあるの?
そちらは未確認です。