WordPressで書いている記事をmoreタグ (<-- more -->) の前後で分割して出力したい! と思う人は少なからずいるのではないかと思います。

以前に同様のことを実現するカスタマイズ方法を記事にしましたが、今回はもっとカンタンに、しかもどんなテンプレート環境でも確実に分割して出力できる方法をご紹介したいと思います。

BisectedBisected Photo by Wajahat Mahmood

カスタムするのはsingle.phpだけ!

以前書いたやり方だと、いじらなければならないファイルがfunctions.phpとsingle.phpの2つだったんですが、今回の方法ではsingle.phpのみをいじくるだけで実装することができます。

また、以前の方法にはちょっとした問題点もあって、テンプレート環境によって前後に分割されずに出力されてしまうこともあったんですね。

で、今回紹介する方法はおそらくどんなテンプレート環境であっても、まず間違いなく分割出力されるはずです。

実装方法

実装するコードは以下のとおり。

<?php if(strpos(get_the_content(),'id="more-')) :
global $more; $more = 0;
the_content(''); ?>
<!-- ここに挟みこみたい要素を挿入 -->
<?php $more = 1;
the_content('', true );
else : the_content();
endif; ?>

single.phpの中にある記事出力の関数

<?php the_content(); ?>

を見つけたら、上記のコードと差し替えるだけです。
前後それぞれのコードをdiv要素やsection要素で括ってid属性やclass属性を与えてやれば、いろいろとデザインもしやすいですよ。

また、以前の方法と同様に、分割したコードの間に広告や関連記事を挿入することも容易です。


今回この記事を書くに当たり、実際に当ブログのテンプレートでもこの方法を試してみたところ、しっかりとmoreタグの前後で分割して出力されることを確認しています。

まぁ、本格的に実装するとなると再度CSSをゴリゴリ変えなきゃならんので、分割出力されることを確認したあと戻しましたが。なにせ最近記事エリアのデザインを変えたばかりなのもあって、今すぐやるのはちとめんどいw

とりあえず次回の「Blog Crowd」のときにでも本格的な実装をしようかなと思っています。

Commentsコメントしてもらえると励みになります