Baccho Log

No Image

Sponsored Link

[WordPress]FeedWordPressで取得した記事にMoreを付ける

  • 投稿日:
Tags:
PHP WordPress
Categories:
プログラミング

元記事が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>までしか置換されません。

« [HTML, CSS]画像をウィンドウサイズによって切り替える[VBA]データ型の記号を調べた »

Sponsored Link

コメントする

記事の感想や修正依頼等ありましたら、コメントをお願いいたします