WordPressで指定ユーザーの記事総数・未公開記事数を表示する方法

Wordpress
スポンサーリンク

前回「1人運営のWordPressサイトで記事総数を出す時の簡単な方法 | 1bit::memo」という記事を書きましたが、複数ユーザーの場合は使えません。世にあるコードをベースに調整する必要があります。個人的に必要になったので、メモ。

確認環境

  • WordPress3.1.4

ユーザーを指定せず、全ての記事数を表示するコード

まずは、ユーザーを指定せず、全ての記事数を表示するコードを記載しておきます。

“`<?php
$result = (int) $wpdb->get_var("
SELECT COUNT(*) FROM $wpdb->posts
WHERE post_type = 'post'
AND post_status = 'publish'
");
echo $result;
?>“`

指定ユーザーの記事数を表示するコード

ユーザーを指定したい場合は、先ほどのコードに条件を追加します。

“`<?php
$result = (int) $wpdb->get_var("
SELECT COUNT(*) FROM $wpdb->posts
WHERE post_type = 'post'
AND post_status = 'publish'
AND post_author = '1'
");
echo $result;
?>“`

「AND post_author = '1'」の部分を追加しています。1というのは、ユーザーIDです。
ユーザーIDは、「ユーザー管理画面」で対象ユーザー名の名前部分のリンクをマウスオーバーします。すると、ブラウザ下部のURL表示部分にユーザーIDが表示されてIDを確認することができます。

指定ユーザーかつ、公開前の記事数を表示するコード

ここまで分かれば、あとは簡単な応用レベルですね。以下のようなコードになります。

“`<?php
$result = (int) $wpdb->get_var("
SELECT COUNT(*) FROM $wpdb->posts
WHERE post_type = 'post'
AND post_status = 'future'
AND post_author = '1'
");
echo $result;
?>“`

「AND post_status = 'future'」ですね。futureは未公開の事です。他にも下書き=draftなどがあります。

指定ユーザーかつ、公開前&公開済みの総記事数表示するコード

もう少し簡単にいくと良かったのですが、ちょっと手間な感じになってしまいました。単純に両方を調べて足しているだけです。

“`<?php
$future = (int) $wpdb->get_var("
SELECT COUNT(*) FROM $wpdb->posts
WHERE post_type = 'post'
AND post_status = 'future'
AND post_author = '1'
");
$publish = (int) $wpdb->get_var("
SELECT COUNT(*) FROM $wpdb->posts
WHERE post_type = 'post'
AND post_status = 'publish'
AND post_author = '1'
");
echo $result + $publish;
?>“`