WP Vicuna-Ext. で、”続きを読む”リンクの”#extended”を消す方法

wpLogoBnr

ここ数日、最新記事だけ全文表示、過去記事は”続きを読む”を自動的に処理できないかなーと模索しています。

色々調べてるうちに、当初の目的と直接は関係ないのですが、こんな記事に行き当たったのでこの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に余計なものが付かず、記事の頭から読めるようになります。

こちらもあわせてどうぞ

カテゴリー: WordPress   タグ: ,   この投稿のパーマリンク

Comments:0件

Comment form
Remember personal info

Trackbacks:0

Trackback URL for this entry
http://www.inolabo.net/201008261110/trackback