以前紹介した「WordPressで続きを読むリンクをカスタマイズ」記事に、あるコメントを頂きました。
コメントの内容にリンクが貼られていたのでリンク先を確認したら、当記事に関してのご意見が書かれていました。
そのリンク先がこちらです。
http://matu.phpapps.jp/archives/183
続きを読むリンクをクリックしたら記事の途中から始まった方がありがたく、管理人の好みで仕様を変える場合は「続きから読む」と「全文を読む」というリンクを2つ設けた方が良い。
という内容でした。
とても良いご意見でしたので、早速2種類のリンクを設けるような仕様に処理を修正する事にしました。
その修正内容をご紹介します。
the_content関数の場合
場所
管理画面 → テーマ編集 → function.php
処理
修正前
// 続きを読むリンクのカスタマイズ function new_content_more($link) { $offset = strpos($link, '#more-'); if ($offset) { $end = strpos($link, '"',$offset); } if ($end) { $link = substr_replace($link, '', $offset, $end-$offset); } return $link; } add_filter('excerpt_more', 'new_content_more');
修正後
// 続きを読むリンクのカスタマイズ (the_content関数) function new_content_more($link) { // 記事の全文を読むリンク修正 $offset = strpos($link, '#more-'); if ($offset) { $end = strpos($link, '"',$offset); } if ($end) { $linkAll = substr_replace($link, '', $offset, $end-$offset); } // 記事の全文を読むテキスト修正 if($linkAll) { $offsetText = strpos($linkAll, 'class="more-link">'); if($offsetText) { $endText = strpos($linkAll, '</a>', $offsetText); } if($endText) { $linkAll = substr_replace($linkAll, 'class="more-link">記事の全文を読む', $offsetText, $endText-$offsetText); } } // リンクを生成 $link = ($linkAll) ? $link.' '.$linkAll : $link; // 返り値 return $link; } add_filter('the_content_more_link', 'new_content_more');
the_excerpt関数の場合
場所
管理画面 → テーマ編集 → function.php
処理
修正前
// 続きを読むリンクのカスタマイズ (the_excerpt) function new_excerpt_more($link) { // 記事の続きから読む $newLink = '<a href="' . esc_url( get_permalink() ) .'#more-' . get_the_ID() . '">' . '»記事の続きから読む' . '</a>'; // リンクを成形 $link.= '<p>' . $newLink . '</p'; // 返り値 return $link; } add_filter('excerpt_more', 'new_excerpt_more');
修正後
// 続きを読むリンクのカスタマイズ (the_excerpt) function new_excerpt_more($link) { // 記事の続きから読む $newLink= '<a href="' . esc_url( get_permalink() ) .'#more-' . get_the_ID() . '">' . '»記事の続きから読む' . '</a>'; // 記事の全文を読む $newLink.= ' <a href="' . esc_url( get_permalink() ) . '">' . '»記事の全文を読む' . '</a>'; // リンクを成形 $link.= '<p>' . $newLink . '</p'; // 返り値 return $link; } add_filter('excerpt_more', 'new_excerpt_more');
上記の処理に修正すると、リンクを2種類設ける事が出来ます。
ご意見を頂いた方、ありがとうございました。
※追記:処理の表示と関数名を変更しました。 2013.05.04
※追記:the_excerpt関数の場合を追加しました。 2013.05.04
参考サイト
・Sunrise and sunset
・WordPressのthe_excerpt()をカスタマイズする: 小粋空間
この記事を見た人にオススメの記事
3件コメントがあります。
はじめまして。私のサイトは最近サーバーをFreewebからPhpAPPSへ移転したばかりで、WordPressのデフォルトではリンクを張ったページに対してトラックバック送信を自動で試みるってことを忘れていまして、トラックバックを送ったことに気が付いていませんでした。
わたしの恥ずかしい記事がご迷惑ではなかったようで安心しました。
ところでWordPressのテーマはバージョンアップさせてしまうと変更もまたやり直しになってしまうのが難点ですよね。
かといってWordPressの本体を改造しても同じくバージョンアップのたびに・・・
高機能CMS型掲示板ツールのPHPBB3の場合は本体を改造しても、自動バージョンアップで改造部分をマージするかどうか選択できて改造部分も引き継げます。このような便利な仕様をWordPressにも実装させて欲しいですよね^^;
私が現在使っているテーマも昨日バージョンアップしてしまい、日付タグの部分が元に戻ってしまったので再度書き換えました。ダッシュボードでの設定をそのまま使いたいのでthe_time(‘F j, Y’)をthe_date()に変更(ーー;)
バージョンアップが面倒です。
トラックバック送信によるものだったんですね。
そうですね、WordPressは使い勝手が良いのですが、バージョンアップを行ったばっかりに不具合が出てしまうという記事多いですよね。
バージョンアップ時にマージ選択出来るようになれば、こちらでどこを修正したというのをメモする手間も省けて、ユーザーとしてはかなり助かる機能です!
他のサービスの長所を取り入れるなどして改善してもらいたいですね。
[…] 以前紹介した「WordPressの続きを読むリンクに全文リンクを追加」記事に、the_excerpt関数のバージョンの処理を追記しました。 関数のカスタマイズについては、下記URLより確認出来ます。 http://piji.daiwa-hotcom.com/wordpress/?p=364 […]
コメントする