I would like to get the total entries per status for each category group.

I have 3 statuses.

the best thing I can come up with is:

{exp:channel:entries channel="any" status="Open"}  {if count == total_results}{count}{/if}{/exp:channel:entries}
{exp:channel:entries channel="any" status="closed"}  {if count == total_results}{count}{/if}{/exp:channel:entries}
{exp:channel:entries channel="any" status="test"}  {if count == total_results}{count}{/if}{/exp:channel:entries}

I think there has to be a smarter way.

Any help would be appreciated. Thank you

  • Actually, just re-read your question and you state "each category group", but the example is showing each channel. In my answer I've assumed channel. Sep 22, 2015 at 11:49

1 Answer 1


For best performance and simplicity...

{exp:query sql="SELECT status as status_label, count(*) as total_results FROM exp_channel_titles GROUP BY status_label"}
    {total_results} results for {status_label}.

You can just output a specific status using a conditional:

{if status_label == "test"}

Or you can refine the search if you have many other statuses you don't want included:

SELECT status as status_label, count(*) as total_results FROM exp_channel_titles WHERE status IN ("open", "closed", "test") GROUP BY status_label

Note I've used "status_label" instead of leaving it as just "status" so that it can be used within a channel entries tag pair without conflict of it's "status" tag value.

Based on this answer, albeit exp:stats doesn't work as I have it turned off and doesn't allow you to refine to status.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.