wordpressでのスマホ対応webサイト制作・wpプラグイン・PHPプログラム・SNS活用・ 動画・bgmやテーマ曲アレンジまで考えるコラム!

【WP記事取得クエリ・プラグイン無し】お知らせなどに使える、ショートコードで特定カテゴリ記事を表示プログラム

      2020/07/21

こんにちは、管理人@SS_mshpです。

今回は、最近何件か対応した、お客さん提供用の自社開発WPテーマに標準装備していた機能をご紹介します。

特定カテゴリー記事を取得しておいて、お知らせみたいに使う・ショートコードで固定ページなどに貼れる』というものです。もちろん、プラグインは無し。さっそく、プログラムをみていってみましょう。

WPのお知らせ表示などに使える、特定カテゴリー記事取得プログラム

表示例


このサイトのテスト用ページにつけてみました。とりあえず『クリエイターの作業中おやつ』というカテゴリーから最新三件を取ります。
もし、WPで会社・お店サイト・ブログ併設したものを作っていて、『お知らせ表示みたいに使いたい』という時は、『お知らせ投稿用のカテゴリー』を作っておいてください。
(※もちろん、カスタム投稿タイプにして、そこから記事を取ってくることもできます)

なお、ショートコードの名前はadd_new_listとしました(好きな名前でokです)。

これを記事内にはることで、上記のように出てきます。

コードと説明(functions.php)

ファンクション名は『news_list』、ショートコード名はadd_new_listです。ポイントはarray(配列)のところで、
『何記事取るか(posts_per_page)』
『ソート(orderby・ここでは日付でソート)』
『並び方(order・降順がdesc)』
『カテゴリ名/スラッグはsnacks-and-sweets(category_name)』

というように指定しました。

あとは変数$retHtml(たしかWP codexにあった変数名)に、取得内容やタグを連結していって、『PHPのforeachでループ回して返す』という流れです。簡単に『get_post_timeで日付』『the_titleで記事タイトル』というようにしました。

アイキャッチサムネイル画像を使うには?→get_the_post_thumbnail()

上記のプログラムではリンク・日付・タイトルを取得しましたが、状況によっては『アイキャッチサムネイル画像』を使いたいということがあるかもしれません。

こんな感じで、アイキャッチ取得用のWP組み込み関数『get_the_post_thumbnail()』を入れてやればよいでしょう。

この状態だとアイキャッチ画像がそのままのサイズででてしまうので、『news_thumbnail』クラスのCSSでサイズなどを調整します。

記事・固定ページではなく、テンプレート内で使うには?→echo do_shortcode('[ショートコード名]')を使う

ショートコードタイプということで、基本的には『記事・固定ページ』に貼り付けて使います。しかし、場合によっては『記事・固定ページではなく、テンプレートのパーツに埋め込んで使いたい』ということがあるかもしれません。

その場合は『echo do_shortcode('[ショートコード名]')』をこのような形で。試しにsidebar.phpにつけてみると・・・


このような形で表示できます。CSSはいじってないので貧相ですが、記事さえ取れてしまえばどうにでもなるので、あまり気にする必要はありません。

あとがき・まとめ

  • category_nameやposts_per_pageのパラメータを指定して、任意の記事を取ってくることができる
  • アイキャッチサムネイルが欲しい場合は、ループ内にget_the_post_thumbnail
  • 記事・固定ページではなく、テンプレート内でショートコードを使うときはecho do_shortcode

まとめるとこんな形でしょうか。プラグインなどよりも使用するコードが短くて済む・クエリを覚えてくると自分の必要な分だけ、というようにカスタマイズできる、というような利点もあります。(そのほか気になっているのはWhat's New Generatorのアップデートが無いことです笑)

記事取得クエリについては、他の記事でも書いていきたいと思います(いつになるかは不明です)。

*アトリエSS・web制作サービスページに移動します。webリニューアル・ロゴ・記事・wordpress化などでお力添えできます。

【カテゴリ】 - PHP・データベースetc
【タグ】 - , , , ,

  関連記事

【WordPressカスタムフィールド検索】meta_queryで、シリアライズ値が入ったフィールドを持つ記事をヒットさせるには?

今回は、ちょっと需要があるかもしれない『WordPressカスタ ...

【WordPress組み込み関数】is_home()とis_front_page()って同じ?→似てますが、厳密には挙動が異なります

今回は、WordPressで条件分岐するときによく使われる組み込 ...

【WordPressユーザー名バレ対策】ユーザー名表示からPHP・preg_matchでリダイレクト(wp-json/wp/v2/usersなど)

今回は、WPログインなどにも使われる情報『ユーザー名』が表示され ...

【PHP etc.プログラム学習サイトコードコピペ】全角引用符・バッククオートが入ってて動かない件に注意

今回は、管理人が学習サイトなどでコードを調べていて、4回くらい遭 ...

WordPressの記事IDで判定して転送~PHP・headerとget_the_IDで対応、the_IDとの挙動の違いも

今回は、前回の『別ディレクトリにWP記事を出す』の続きで、新しい ...

PHP・mb_substr関数を使って、タイトル文字数を揃える(WPレイアウト調整)

今回はPHP関数を使って、表示の調整をしてみたいと思います タイ ...

【ユーザーデータ取得】WordPress定義済み関数の『get_userdata()』『wp_get_current_user()』ってどのように違うの?

今回は、WPシステムのwebサイト制作などでちょくちょくお目にか ...