sigeoさん、こんにちは。
プラグインにすることも出来ますが、今回はお手軽にユーザー関数での実装でいってみます。
まず、利用しているテーマフォルダ内にある、functions.phpに以下のコードを追加します。(<?php ?>の括りの中にいれてください。)
これが呼び出されると、本来一括りにされていたmore前後の記事のhtmlが分けられた状態で
戻されてきます。
function get_the_divided_content( $more_link_text = null, $stripteaser = 0, $more_file = '' ) {
$regex = '#(<p><span id="more-[\d]+"></span></p>|<span id="more-[\d]+"></span>)#';
$content = get_the_content( $more_link_text, $stripteaser, $more_file );
$content = apply_filters( 'the_content', $content );
$content = str_replace( ']]>', ']]>', $content );
if ( preg_match( $regex, $content ) ) {
list( $content_array['before'], $content_array['after'] ) = preg_split( $regex, $content, 2 );
} else {
$content_array['before'] = '';
$content_array['after'] = $content;
}
return $content_array;
}
次に、投稿、ページのテンプレート(single.phpやpage.phpなど)内の
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
の記述直後で、先ほど記述した関数を呼び出します。
<?php $content = get_the_divided_content( '<p class="serif">続きを読む
' ); ?>
記事の出力については、まず全文出力してしまう
<?php the_content( ************* ); ?>
という記述を削除します。(バックアップはとっておいてください。)
その代替として、more以前の記事を
<?php echo $content['before']; ?>
で出力。
その後に、共通コンテンツを記述して、
最後に下記コードでmore以降の記事を出力します。
<?php echo $content['after']; ?>
なお、moreタグが無い場合は、共通コンテンツの後に記事が表示されるようになっています。
MTをご存じの方なので、テンプレートの編集などは問題ないと思いますが、ご不明な点などあれば返信ください。
jim912さん、こんにちは。
すみません、ずっと気付いていませんでした。
ありがとうございます。
実現することが出来ました。
早速いろいろなところで試してみます。