WP_Query:在特定时间内按特定顺序显示帖子

WP_Query: Show posts in a certain order for a certain time

我想在我的主页上以 post__in 下指定的顺序显示每个 post 一天。这意味着首先应该显示 ID 为 3 的 post 直到 23:59:59,然后是 ID 为 1 的 post 显示 24 小时直到 23:59:59,然后是 post ID 2 等等。当显示所有 post 时,它应该从头开始。有人知道如何实现吗?

function post_of_the_day( $query_args) {
    global $post;
    
    $query_args = array(
            'post_type'      => 'example_post_type',
            'posts_per_page' => 1,
            'post__in'       => array(3, 1, 2, 4, 7, 6, 5)
        );

     return $query_args;

     }

如果一周中的每一天只需要一个 post,您可以使用 PHP 的 date() function, with the 'w' format string. It returns 0 for Sunday, 1 for Monday, 6 for Saturday, etc. Then you can use that as an index to find the one post ID you want from your array, and use the 'p' argument in your WP_Query() arguments

function post_of_the_day( $query_args ){
    $post_ids = array( 3, 1, 2, 4, 7, 6, 5 ); // List of available ID's
    $id_index = absint( date('w') );          // 0-6 based on day of the week

    $query_args = array(
        'p' => $post_ids[$id_index],          // 3 on Sun, 1 on Mon, 5 on Sat
        'post_type' => 'example_post_type'    // Your post type
    );
    
    return $query_args;
}

如果您只需要一个,则无需使用 post__in 查询所有 7 个 post。通常,您希望尝试检索尽可能少的信息以提高速度、优化和易于维护。