0

We have a custom type called books. In a template, we need to show the counts of books that have the book_type as

  1. Fiction
  2. Non Fiction
  3. Novel
  4. Short Stories

We use ACF Pro, and the above field is set up as a checkbox multiple selection. So a book can be Fiction + Short Stories, Fiction + Novel, etc. We need to count only Fiction.

This does not work, as found in another suggested thread here:

$query = new WP_Query( array( 'meta_key' => 'book_type', 'meta_value' => 'Fiction' ) );
$fiction = $query->found_posts;

I don't have enough points to comment there, so it's better I suppose to create a new ticket.

Also found a thread on the ACF forums, but the code suggested there doesn't work either. I use latest WP, latest ACF Pro (5.8.x).

Welcome any thoughts on how to do this.

  • You have to use meta query like: wordpress.stackexchange.com/a/159433/138292 – Nishit Manjarawala Jun 14 at 5:30
  • This type of data would be much better suited to a Taxonomy. Then you can easily get the post count as it's stored alongside the taxonomy terms as $term->post_count. – Jacob Peattie Jun 14 at 6:38
  • @JacobPeattie I suppose its you who downvoted my anwser ? May I ask you why ? It does the requested job, no ? – Gregory Jun 14 at 12:09
  • @Gregory You make several points in your answer that are inaccurate: They shouldn't use LIKE, a full meta_query is not necessary, and posts_per_page does not need to be -1 when using found_posts. – Jacob Peattie Jun 14 at 12:14
  • @JacobPeattie thanks for the reply, but i really don't think it has to be downvoted for those reason. Maybe just add a comment, & i will edit with your suggestions ! – Gregory Jun 14 at 12:17
0

1st. you need to add post_type to your query, then you need to filter meta_value with LIKE. Finaly, you need to add posts_per_page as -1 to get ALL posts.

$args = array(
    'post_type'=> 'books',
    'meta_query' => array(
                     array(
                        'key'     => 'book_type',
                        'value'   => 'Fiction',
                        'compare' => 'LIKE',
                    )
                ),
);
$query = new WP_Query($args);
$fiction = $query->found_posts;

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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