0

I am trying to access post meta for custom post type and taxonomy using WP_Query and then query the posts with that specific post meta.
So far I have tied the following code:

$hot_args = array(
                            'post_type' => 'video',
                            'posts_per_page' => '6',
                            "order" => "DESC",
                            'meta_key' => 'post_views_count',
                            'orderby' => 'meta_value_num',
                            'date_query'  => array(
                                array(
                                    'after' => '1 week ago'
                                )
                            ),
                            "post__not_in" => $posts__not_in,
                            'tax_query' => array(
                                array(
                                    'taxonomy' => 'video_cat',
                                    'field' => 'slug',
                                    'terms' => "all"
                                )
                            ),
                        );
                        $hot_query = new WP_Query( $hot_args );

This code doesn't work and not returning any results.

For normal posts this piece of code works but for custom post type doesn't, How can I make it work for custom post types?

3 Answers 3

0

Find The problem ;)
The answer is

$hot_args = array(
                            'post_type' => 'video',
                            'posts_per_page' => '6',
                            "order" => "DESC",
                            'meta_key' => 'post_views_count',
                            'orderby' => 'meta_value_num',
                            'date_query'  => array(
                                array(
                                    'after' => '1 week ago'
                                )
                            ),
                            "post__not_in" => $posts__not_in,
                        );
                        $hot_query = new WP_Query( $hot_args );

There was not video as my custom post type exists in the past week so the there was nothing to return :)

0

You should not use post meta in your case. This will result in slow database query performance. Use a custom table instead.

Have a look at one of these:

1
  • That question isn't answered either way. I can't imagine this example would cause database problems.
    – Rup
    2 days ago
0

The solution is :)

    // Define an array of post IDs to exclude
$posts__not_in = array( /* Add your post IDs to exclude here */ );

// Define the arguments for WP_Query
$hot_args = array(
    'post_type'      => 'video',              // Retrieve posts of type 'video'
    'posts_per_page' => 6,                    // Limit to 6 posts per page
    'order'          => 'DESC',               // Order by descending order
    'orderby'        => 'meta_value_num',     // Order by meta value (numeric)
    'meta_key'       => 'post_views_count',   // Sort by post views count
    'date_query'     => array(                // Filter by date
        array(
            'after' => '1 week ago',          // Show posts published after 1 week ago
        ),
    ),
    'post__not_in'   => $posts__not_in,       // Exclude posts defined in $posts__not_in array
    'tax_query'      => array(                // Filter by taxonomy
        array(
            'taxonomy' => 'video_cat',        // Use 'video_cat' taxonomy
            'field'    => 'slug',             // Use slug for field matching
            'terms'    => 'all',              // Show posts in 'all' category
            'operator' => 'IN',               // Match terms using IN operator
        ),
    ),
);

// Create a new WP_Query instance with the updated arguments
$hot_query = new WP_Query( $hot_args );
New contributor
Aman Singh is a new contributor to this site. Take care in asking for clarification, commenting, and answering. Check out our Code of Conduct.
2
  • Can you explain what you've changed here please? At first glance this is the same code as is in the question, except you've added comments and 'operator' => 'IN' (which I think is the default anyway?)
    – Rup
    2 days ago
  • difference is in the organization of the code and the handling of the $posts__not_in variable. Make sure that $posts__not_in is properly defined with an array of post IDs to exclude before it's referenced in the WP_Query arguments array. This should ensure that your WP_Query works correctly without errors related to undefined variables.
    – Aman Singh
    9 hours ago

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.