2690

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

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

確認環境

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

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

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

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

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

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を確認することができます。

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

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

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などがあります。

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

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

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;
?>
モバイルバージョンを終了