WordPressに記事が1件も無い場合に文字を表示させる方法


あまり想定できないケースのように思われるかもしれませんが、意外にあるのが、「WordPressに記事が1件も無い場合」です。
これは、そのサイト全体に記事がまったく無いというケースではありません。

例えば、カテゴリーを複数作ったけど、まだ記事を1件も書いていないカテゴリーがある、という場合は、その典型です。サイト運営を始めたばかりではあると思います。
また、私が直近で作ったサイトで言うと、
WordPressで過年度の同じ日付や同じ週の記事を表示する方法
に書きました通り、
人物名鑑のサイトで、人物の誕生日を記事公開日付にしたものですから、その日に誕生日の人がいない(=過去のその日の公開記事が無い)、という場合がありました。
その他にもいくらでも応用が考えられると思いますが、いずれにしましても、特定の条件下におけるWordPress記事が1件も無い、という場合はあると思います。

このような時に、空欄にしておくこともできますが、味気ないので、「記事がありません」「これから記事を書きます!」などと表示させたいとか、逆に、1件でも記事を書くまでは該当箇所を丸っと削除したいとか、そういう需要もあるのではないかと思います。

これらの要望に合うWordPressのテンプレートタグとして、
get_posts
という関数があります。

テンプレートタグ/get posts – WordPress Codex 日本語版

この関数を使うと、記事が1件も無い場合に、特定の文字を表示させることが可能となります。
例えば、以下のようなソースコードをWordPressテーマの該当箇所に書きましょう。

WordPressに記事が1件も無い場合に文字を表示させる方法

$kijiganai = get_posts( 'category=4' );
if (! $kijiganai){
echo "○○カテゴリーの記事はまだ1件もありません。";
}

以上の例は、カテゴリーIDが4のカテゴリーに、記事がゼロ件の場合、「○○カテゴリーの記事はまだ1件もありません。」と書く例です。
行なっていることは単純で、
get_posts関数で、記事の有無を、$kijiganaiという変数に入れています。
そして、記事が無い場合に、if文の否定文「!」で、条件に該当していない場合に、echoで書かれている文章を表示させています。

これは、応用をすれば、逆に、記事が有る場合に特定の文字を出すことも出来るでしょう。その場合は、
if (! $kijiganai)
とある「!」を取って、
if ($kijiganai)
とすれば解決します。

get_postsのパラメーターは、テンプレートタグ/get posts – WordPress Codex 日本語版に載っています。

パラメーター
$numberposts
(整数) (オプション) 取得する投稿の数。0 にするとto use the max number of posts per page の最大値。-1 にすると制限無。
初期値: 5
$offset
(整数) (オプション) 先頭から何件の投稿を除外するか。
初期値: 0
$category
(整数) (オプション) 指定したカテゴリID の投稿のみを返す。(-3のように)カテゴリID をマイナスにすると、このカテゴリID以外の投稿を返す。複数のカテゴリを指定する場合は、カテゴリIDをカンマで区切る(配列での指定は不可)。
初期値: なし
$category_name
(文字列) (オプション) 指定したカテゴリー名またはカテゴリースラッグの投稿のみを返す。
初期値: なし
$tag
(文字列) (オプション) 指定したタグスラッグの投稿のみを返す。複数のタグスラッグを指定する場合は、カンマで区切ると、いずれかのタグにマッチした投稿をすべて返す。タグスラッグを空白で区切って指定すると、すべてのタグにマッチした投稿を返す。
初期値: なし
$orderby
(文字列) (オプション) 以下に示す様々な値(空白で区切る)で並べ替える。
‘author’ – 著者ID。
‘category’ – カテゴリID。
‘content’ – コンテンツ。
‘date’ – 作成日。
‘ID’ – 投稿ID。
‘menu_order’ – メニュー。ページとアタッチメントでのみ有効。
‘mime_type’ – MIME type。アタッチメントでのみ有効。
‘modified’ – 最終更新日
‘name’ – stub。
‘parent’ – 親ID。
‘password’ – パスワード。
‘rand’ – ランダム。
‘status’ – ステータス。
‘title’ – タイトル。
‘type’ – 投稿タイプ。
注:
ID と rand は Version 2.5から利用可能。
初期値: date
$order
(文字列) (オプション) $orderby でのソート方式。有効な値:
‘ASC’ – 昇順(低から高)。
‘DESC’ – 降順(高から低)。
初期値: DESC
$include
(文字列) (オプション) 表示したい投稿のID。カンマまたは空白で区切る。次の例では、6 つの投稿を表示する。
‘45,63,78,94,128,140’
注: このパラメータを使用すると posts_per_page, offset, category, exclude, meta_key, meta_value, および post_parent パラメータを上書きします。
初期値: なし
$exclude
(文字列) (オプション) 表示したくない投稿のID。カンマまたは空白で区切る。( $include パラメータを参照)
初期値: なし
$meta_key and $meta_value
(文字列) (オプション) メタフィールド(カスタムフィールド)のキーと値を持つ投稿のみ表示する。両方のパラメータ指定が必要(一方だけでは動作しない)。
初期値: なし
$post_type
(文字列) (オプション) 表示する投稿のタイプ。利用可能なオプション:
post – デフォルト
page
attachment
any – 全て
初期値: post
$post_status
(文字列) (オプション) 指定したステータスの投稿を表示する。複数のステータスを指定する場合はカンマで区切る。利用可能なオプション:
publish – デフォルト
private
draft
future
inherit – $post_type がアタッチメントのときのデフォルト
(blank) – すべてのステータス(WordPress version 2.8 以降では、’any’ を使用する。変更された時期は不明。)
初期値: publish
$post_parent
(整数) (オプション) このIDの投稿の子のみを表示する。
初期値: なし
$nopaging
(真偽値) (オプション) ページングを有効/無効にする。ページングを無効にすると $numberposts オプションが無視される。
初期値: なし

以上となります。
get_posts関数は色々な応用のきく関数ですので、知っておくと便利な場面もあると思います。

カテゴリー: WordPressのカスタマイズ パーマリンク

WordPressに記事が1件も無い場合に文字を表示させる方法 への7件のフィードバック

  1. khoshino のコメント:

    たまたまこういうケースがあったので、メモも兼ねてブログ記事に書きました。get_posts関数の使い方の1つです。 – WordPressに記事が1件も無い場合に文字を表示させる方法 http://t.co/DjJiDfr6

  2. mypacecreator のコメント:

    変数の使い方入門によさげな記事

  3. f3studio のコメント:

    WordPressに記事が1件も無い場合に文字を表示させる方法 http://t.co/d6BSchHj @khoshinoさんから

  4. artemisaqua のコメント:

    WordPressに記事が1件も無い場合に文字を表示させる方法 http://t.co/tYyGHBNT @khoshinoさんから

  5. nestle_up のコメント:

    @goodsun_taichi 間違った!これは?http://t.co/gwWzzLvM

  6. ku_marin のコメント:

    get_posts使用時に記事が1件もない時

  7. ateitexe のコメント:

    get_postsで件数ゼロのとき!メモメモ

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA