【WordPress/PHP】投稿内容の「続きを読む」の前後を分けて取得する

PHP,WordPress

こんにちは、しきゆらです

最近は学校で使うのでWordPressを触っています

そんな中で、投稿の「続きを読む」の前後を分けて出力したいという部分があり

調べてもよくわからなかったんで作ってみました

 

 

 

まずはコードを

function divide_content(){
	$content = str_replace(" ", "", get_the_content("", false));
	$after = str_replace(" ", "", get_the_content("", true));
	$before = str_replace($after,"", $content);
	return array('before' => $before,'after' => $after);
}

細かいところでまずい部分があるかもしれませんが、とりあえずこれで「続きを読む」の前と後を別々に取得できます

 

これをWordPressで使う場合は「functions.php」にこれを追加すればOKです

あとはsingle.phpとかでこの関数を呼び出せば、記事の前後を分けた配列を返してくれます

 

簡単な説明

$contentには、記事全体の文章(HTMLタグ入り)が入ります

get_the_content()で記事の内容を取得し、str_replace()で不要なものを削除し格納します


get_the_content()についての詳しいことは、WordPress Codexをご覧ください

なお、引数は2つ取れるようですがどちらもオプションなので、なくても大丈夫なようです

しかし、$more_link_textや$stripteaserの片方のみを渡しても動作しないようでした

なので、上記では明示的に2つの引数を渡しています

また、str_replace()についてはPHPリファレンスをご覧ください


 

 

$afterには、「続きを読む」以降の文章を保持しています

処理している内容は$contentと同じ

 

$beforeには、「続きを読む」以前の文章を保持しています

正確には、記事全体から「続きを読む」以降の文章を削除したものを保持しています

 

処理内容は本当に単純ですが、ほしい動作が得られたので満足

同じような内容で悩んでいる場合はお試しを

Posted by しきゆら