カテゴリー
WordPress

【WordPress】子テーマでも moreタグでURL末端に付く #more-xxxx を削除する

スクリーンショット 2013-07-10 20.34.48.png

以前のテーマでは、本ブログの「続きを読む →」をクリックした時の 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);
}
  1. #more- が始まる位置を取得し、
  2. 取得できていれば
  3. 最後の位置を取得し、
  4. 最後の位置が取得できていれば
  5. #more- の始まる位置から終わりの位置までを空白に変換

長く、複雑で、難しいですね!

more-link の #more-xxxx を削除する | dogmap.jp

$output = preg_replace('/#more-[\d]+/i', '', $output );
  1. 「#more-数字1つ以上」を空文字に変換

1行で済むとは、エレガントですね!

Customizing the Read More « WordPress Codex

$link = preg_replace( '|#more-[0-9]+|', '', $link );
  1. 「#more-数字1つ以上」を空文字に変換

こちらも1行で済んでおり、行なっていることは同じです。ですが、書き方が異なります。このことから、[\d]+ = [0-9]+ = 数字が1つ以上、の正規表現であることがわかりました♪

おわりに

これにて、新テーマへの移行の肝心な部分は全て完了しました。

あとは、ヘッダー画像をひたすら設定していくだけですね♪楽しみです♪

以上です。

コメントを残す