function test_ordered_by_ending_soon() { $query = Charitable_Campaigns::ordered_by_ending_soon(); $this->assertEquals(3, $query->found_posts); $i = 0; while ($query->have_posts()) { $query->the_post(); $this->assertEquals($this->campaigns_ordered_by_ending_soon[$i], get_the_ID(), sprintf('Index %d for campaigns orderd by date ending', $i)); $i++; } $query_2 = Charitable_Campaigns::ordered_by_ending_soon(array('posts_per_page' => 1)); $this->assertEquals(1, count($query_2->posts)); }
/** * Return campaigns to display in the widget. * * @param array $instance * @return WP_Query * @access protected * @since 1.0.0 */ protected function get_widget_campaigns($instance) { $number = isset($instance['number']) ? absint($instance['number']) : 5; $args = array('posts_per_page' => $number); if (isset($instance['order']) && 'recent' == $instance['order']) { $args['orderby'] = 'date'; $args['order'] = 'DESC'; return Charitable_Campaigns::query($args); } return Charitable_Campaigns::ordered_by_ending_soon($args); }
/** * Return campaigns to display in the campaigns shortcode. * * @param array $args * @return WP_Query * @access public * @static * @since 1.0.0 */ public static function get_campaigns($args) { $query_args = array('posts_per_page' => $args['number']); /* Pagination */ if (!empty($args['paged'])) { $query_args['paged'] = $args['paged']; } /* Set category constraint */ if (!empty($args['category'])) { $query_args['tax_query'] = array(array('taxonomy' => 'campaign_category', 'field' => 'slug', 'terms' => $args['category'])); } /* Set author constraint */ if (!empty($args['creator'])) { $query_args['author'] = $args['creator']; } /* Only include active campaigns if flag is set */ if (!$args['include_inactive']) { $query_args['meta_query'] = array('relation' => 'OR', array('key' => '_campaign_end_date', 'value' => date('Y-m-d H:i:s'), 'compare' => '>=', 'type' => 'datetime'), array('key' => '_campaign_end_date', 'value' => 0, 'compare' => '=')); } if (!empty($args['exclude'])) { $query_args['post__not_in'] = explode(',', $args['exclude']); } /* Return campaigns, ordered by date of creation. */ if ('post_date' == $args['orderby']) { $query_args['orderby'] = 'date'; $query_args['order'] = 'DESC'; return Charitable_Campaigns::query($query_args); } /* Return campaigns, ordered by how much money has been raised. */ if ('popular' == $args['orderby']) { return Charitable_Campaigns::ordered_by_amount($query_args); } /* Return campaigns, ordered by how soon they are ending. */ return Charitable_Campaigns::ordered_by_ending_soon($query_args); }