以前のテーマでは、本ブログの「続きを読む →」をクリックした時の URL に手を加えまして、末尾に付きます #more-xxxx を削除するように修正を加えておりました。
新しくしました Twenty Twelve での子テーマでも同様のことを行い、しかし、若干コードを変更して実現したいと思います。
調べました♪
前回とは別のコードで、と申しましてもオリジナルの処理を考えるわけではございません。まず、おさらいとして、以前は次の公式ページ日本語版の方法を採用したのでした。
とはいえ、この時にすでにもっとスマートな方法も判明しておりました。
この度、スマートなやり方を保持しつつ、より公式に近い信頼出来る情報は無いかと調べましたら、公式ページ本家英語版にありました♪
そのようなわけで、今回はこの公式ページ本家英語版のやり方で実現いたします。
ソースを修正します!
oki2a24com-twentytwelve-child/functions.php の末尾に次のコードを追加します。
/** * more タグで URL 末端に付く #more-xxxx を削除します。 */ function remove_more_link_scroll( $link ) { $link = preg_replace( '|#more-[0-9]+|', '', $link ); return $link; } /** * コンテンツの more リンククリック時に処理を追加します。 */ add_filter( 'the_content_more_link', 'remove_more_link_scroll' );
三者三様のソースを比較♪
異なる部分のみを抜き出します。引数のリンク($link、$output)をどのように処理しているかの部分です。
「続きを読む」のカスタマイズ – WordPress Codex 日本語版
$offset = strpos($link, '#more-'); if ($offset) { $end = strpos($link, '"',$offset); } if ($end) { $link = substr_replace($link, '', $offset, $end-$offset); }
- #more- が始まる位置を取得し、
- 取得できていれば
- 最後の位置を取得し、
- 最後の位置が取得できていれば
- #more- の始まる位置から終わりの位置までを空白に変換
長く、複雑で、難しいですね!
more-link の #more-xxxx を削除する | dogmap.jp
$output = preg_replace('/#more-[\d]+/i', '', $output );
- 「#more-数字1つ以上」を空文字に変換
1行で済むとは、エレガントですね!
Customizing the Read More « WordPress Codex
$link = preg_replace( '|#more-[0-9]+|', '', $link );
- 「#more-数字1つ以上」を空文字に変換
こちらも1行で済んでおり、行なっていることは同じです。ですが、書き方が異なります。このことから、[\d]+ = [0-9]+ = 数字が1つ以上、の正規表現であることがわかりました♪
おわりに
これにて、新テーマへの移行の肝心な部分は全て完了しました。
- 子テーマを使う(Complete!)
- ヘッダー画像を設定する(Complete!)
- h2 の見出し、h3 の小見出しを修正するか検討する(Complete!)
- Jetpack 2.0 の無限スクロールを導入する(Complete!)
- moreタグでURL末端に付く #more-xxxx を削除する(Complete!)
あとは、ヘッダー画像をひたすら設定していくだけですね♪楽しみです♪
以上です。