【WordPress更新情報表示】php/wp組み込みファンクション(fetch_feed)で取得と、プラグインで表示どちらが良い?
| 更新: 2024/02/16 | 2050文字
今回は、WordPress系のサイトで、トップページとか任意の部分に『ブログ部分の更新情報を表示』する方法について考えてみます。方法は『php/wp組み込みファンクションで更新情報取得して表示』『プラグイン』の2つ。それぞ特長を押さえて、どちらがよいか検討してみましょう。
目次
方法1:自分でフィード取得プログラムを組んで更新情報を取得・表示
やり方・phpコード(fetch_feed使用)
更新情報取得プログラムのコードです。WordPressではパーツごとのphpファイルがあるので、表示したいところに対応したphpファイルにこれを書きます(場合によってはトップページだけみたいな条件分岐が必要になります)。fetch_feedという組み込みファンクションがあるので、わりとシンプルです。 『何記事取得か』『日付取得するか』などをプログラムに書いていきました。
(コード参考:wordpress codex)
https://wpdocs.osdn.jp/関数リファレンス/fetch_feed
キャッシュについて
『wordpress codex』によると、初期設定ではいちど取得した記事が『12時間キャッシュ』されるということです。 キャッシュを制御するには『wp-includes/feed.php』ファイル内のキャッシュ部分を、任意の数字に書き換えます。
例えば『いっぱい更新するからキャッシュ1時間』とか。($feed->set_cache_durationというところに、12 * HOUR_IN_SECONDSと指定されているので、ここを1時間にします。)
php/wp組み込みファンクションで取得の特長やデメリット
『プラグインを入れなくて良い』や、『プログラム組める人には設定自由自在』というのがポイントだと思います。デメリットとしては『プログラム慣れてない方には複雑』『記事部分じゃなくて、phpファイル内に書く』などが挙げられます。
方法2:プラグインwhat’s new generator
インストールや設定・表示の仕方
プラグインタイトル『what’s new generator 』で検索、有効化したら、あとはメニューに更新情報の設定ができるので設定します。 設定内容は『何記事表示するか?』『newアイコンはどれくらい期間つける?』など。表示させるときは、記事内の任意の場所にショートコードを貼り付けるだけでOKです。
what’s new generator 特長やデメリット
特長はなんといっても『操作がカンタン』ということです。表示したい記事にショートコードを貼るだけなので、特にプログラムの知識もいりません。
あまり無いけど、デメリットとしては『プラグイン読み込みの分、ちょっとだけ重くなる』や、『ショートコードが機能する場所にしか貼れない(記事など・header.php内とかはムリ)』といったところでしょうか。どうしても使いたい場合は『do_shortcode』を使うという形になりそうです。
(2020追記)どっちもWPの場合は、組み込みファンクションget_postsで記事取得してショートコード
(追記です)『お知らせ・新着を表示させたいサイト』『お知らせをブログみたいに書いているサイト』が、どちらも同じWPシステムで動いている場合は『get_posts』などの組み込みファンクションで記事を取ってきて、ショートコードで表示というものも使えるので、作ってみました。
こんな感じで新着がでます。詳しくは以下の記事もご覧ください。
【WP記事取得クエリ・プラグイン無し】お知らせなどに使える、ショートコードで特定カテゴリ記事を表示
/archives/7179/wp-shortcode-get-post/
あとがき・まとめ
- ヘッダー内に貼ってトップページだけ条件分岐するならfetch_feedで取得
- プラグインあまり入れたくないときもfetch_feedで取得
- 記事ページ内にサクッと表示したいときはプラグインで
- 『お知らせを表示させたいサイト』『お知らせを書いているサイト』が、どちらも同じWPシステムの場合は、get_postsなどを使ってもok
といった感じだと思います。状況によってはテンプレートファイルをガンガンにカスタマイズしても大丈夫な場合があると思いますが、その場合はfetch_feedをテンプレートにつけても大丈夫です(テンプレートのアップデートを使いたい場合は子テーマも検討)。
【カテゴリ】- WordPressファンクションetc
【タグ】- fetch_feed(WordPress), get_posts(WordPress), PHP