Sponsored Link
[WordPress]FeedWordPressで取得した記事にMoreを付ける
元記事がWordPressの記事であることが前提です。
FeedWordPressで引っ張ってきた元記事にMoreが付いていた場合Moreが付きません。
記事ごとに<!--more-->
を付けることは出来ますが、記事が多かったりすると現実的ではありません。
では、the_content
のフックで対応したいと考えましたが、
Manual editing にチェックを付けないと the_content
のフックが効きません。※1
これはデフォルトでチェックが付いていません。
チェックを付けるための設定がありそうですが、見つからなかったので無理矢理対応しました。
※1 フック自体は機能しますが、return
をしても記事の中身が編集されません。echo
であれば記事の文字追加は出来ます。
functions.php
<?php
function rss_content_more($content) {
$pattern = '/(\<p\>\<span id\=\"more|\<span id\=\"more).+/s';
$content = preg_replace($pattern, '<a class="btn-more" href="' . get_permalink() . '">詳しく見る</a>', $content);
return $content;
}
page.php
<?php
echo rss_content_more(get_the_content());
Moreが付いている記事の場合、
<p><span id="more-%postid%"></span></p>
というタグが付きます。(pタグが無い場合もある)
それを置換してMoreが自動で付くようにしました。
patternに s
が付いているのは、最終行まで置換するためです。
これを付けないと、<p><span id="more-%postid%"></span></p>
までしか置換されません。