admin管理员组

文章数量:1122846

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?

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?

Share Improve this question asked Sep 4, 2016 at 6:24 MMTDesignerMMTDesigner 1351 gold badge2 silver badges14 bronze badges
Add a comment  | 

3 Answers 3

Reset to default 1

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 :)

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:

  • Would this post meta be better added to the post table rather than post_meta table

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 );

本文标签: wp queryHow to get post meta for custom post type and taxonomy