【WordPress/PHP】投稿内容の「続きを読む」の前後を分けて取得する
こんにちは、しきゆらです
最近は学校で使うので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には、「続きを読む」以前の文章を保持しています
正確には、記事全体から「続きを読む」以降の文章を削除したものを保持しています
処理内容は本当に単純ですが、ほしい動作が得られたので満足
同じような内容で悩んでいる場合はお試しを