ここ数日、最新記事だけ全文表示、過去記事は”続きを読む”を自動的に処理できないかなーと模索しています。
色々調べてるうちに、当初の目的と直接は関係ないのですが、こんな記事に行き当たったのでこのblogでもやってみました。
wp.vicunaのcontinue reading…を”続きを読む”に変更して#extendedをなくす方法 – sorarium
“#extended”が付かなくなると何が起きるかというと…
まず、URLが分散しなくなります。
ブックマーク先などが”ドメイン/記事ID”と”ドメイン/記事ID#extended”に分かれてしまうことが無くなるわけです。
次に、WordPressでは”続きを読む”をクリックした場合、自動的に”続きを読む”で隠されていた部分まで飛ぶようになっているのですが、これが意外と読みにくい。
それが、記事の先頭から表示されるようになります。
元記事ではwp.vicunaを想定していますが、当blogは拡張版のVicuna.Extを使っています。
とはいえ、やることは同じなんですけども。(※やることが同じなので、以下の記述は元記事と同じです)
/wp-contents/theme/Vicuna_Ext/functions.php 内に、以下のような箇所があるので探します。
$content = preg_replace(‘/\s*<p><span id=”more-([0-9]+?)”><\/span>(.*?)<\/p>/’, “\n\t\t\t</div>\n$indentText<div class=\”textBody\” id=\”extended\”>\n$indentText\t<p>\\2</p>”, $content); $content = preg_replace(‘/\s*<span id=”more-([0-9]+?)”><\/span>(.*?)<\/p>/’, “\t</p>\n\t\t\t</div>\n$indentText<div class=\”textBody\” id=\”extended\”>\n$indentText\t<p>\\2</p>”, $content); $content = preg_replace(‘/\s*<p><span id=”more-([0-9]+?)”><\/span>(.*?)<br\s*\/>/’, “\n\t\t\t</div>\n$indentText<div class=\”textBody\” id=\”extended\”>\n<p>$indentText\t<p>\\2</p>”, $content);
それぞれのid=\”extended\”を削除して、以下のようにします。
$content = preg_replace(‘/\s*<p><span id=”more-([0-9]+?)”><\/span>(.*?)<\/p>/’, “\n\t\t\t</div>\n$indentText<div class=\”textBody\”>\n$indentText\t<p>\\2</p>”, $content); $content = preg_replace(‘/\s*<span id=”more-([0-9]+?)”><\/span>(.*?)<\/p>/’, “\t</p>\n\t\t\t</div>\n$indentText<div class=\”textBody\”>\n$indentText\t<p>\\2</p>”, $content); $content = preg_replace(‘/\s*<p><span id=”more-([0-9]+?)”><\/span>(.*?)<br\s*\/>/’, “\n\t\t\t</div>\n$indentText<div class=\”textBody\”>\n<p>$indentText\t<p>\\2</p>”, $content);
次に、以下の部分のextendedをそれぞれ削除。
$content = preg_replace(‘/<p(\s.+?=”.+?”>|>)\s?<a href=”(.+?)#more-([0-9]+?)”>(.+?)<\/a><\/p>/’, ‘<p><a href=”\2” title=”‘ . $entry_title . ‘ 全文を読む” rel=”nofollow”>\4</a></p>’, $content);
$content = preg_replace(‘/\s*<a href=”(.+?)#more-([0-9]+?)”>(.+?)<\/a><\/p>/’, “</p>\n\t\t\t\t”.’<p><a href=”\1extended” title=”‘ . $entry_title . ‘ 全文を読む” rel=”nofollow”>\3</a></p>’, $content);
それぞれ、このようになります↓
$content = preg_replace(‘/<p(\s.+?=”.+?”>|>)\s?<a href=”(.+?)#more-([0-9]+?)”>(.+?)<\/a><\/p>/’, ‘<p><a href=”\2” title=”‘ . $entry_title . ‘ 全文を読む” rel=”nofollow”>\4</a></p>’, $content);
$content = preg_replace(‘/\s*<a href=”(.+?)#more-([0-9]+?)”>(.+?)<\/a><\/p>/’, “</p>\n\t\t\t\t”.’<p><a href=”\1” title=”‘ . $entry_title . ‘ 全文を読む” rel=”nofollow”>\3</a></p>’, $content);
編集が終わったら保存してアップロード。
これで、”続きを読む”リンクをクリックした場合にも、URLに余計なものが付かず、記事の頭から読めるようになります。
こちらもあわせてどうぞ
- コメントとトラックバックを強引に分離
- 似顔絵作成ツールUltimateFlashFaceが面白い
- CSSで横並びリストメニュー(Tips)
- WordPressの新デフォルトテーマはいじりやすい – デザイン変更予定
- 2010年の手帳はDELFONICS
