আপডেট 23 ডিসেম্বর 2014
শ্রেণীর date_query
সম্পত্তি ব্যবহার করে আরও ভাল পদ্ধতি রয়েছে WP_Query
:
$args = array(
'post_type' => 'post',
'tax_query' => array(
array(
'taxonomy' => 'post_format',
'field' => 'slug',
'terms' => array( 'post-format-image' )
)
),
'cat' => '-173',
'post_status' => 'publish',
'date_query' => array(
'column' => 'post_date',
'after' => '- 30 days'
)
);
$query = new WP_Query( $args );
পুরানো উত্তর
WP_Query () এ সময় পরামিতি ব্যবহার করুন
কোডেক্সের উদাহরণ উদ্ধৃত:
গত 30 দিন থেকে পোস্টগুলি রিটার্ন করুন:
// This takes your current query, that will have the filtering part added to.
$query_string = array(
'post_type' => 'post',
'tax_query' => array(
array(
'taxonomy' => 'post_format',
'field' => 'slug',
'terms' => array( 'post-format-image' )
)
),
'cat' => '-173',
'post_status' => 'publish'
);
// Create a new filtering function that will add our where clause to the query
function filter_where( $where = '' ) {
// posts in the last 30 days
$where .= " AND post_date > '" . date( 'Y-m-d', strtotime( '-30 days' ) ) . "'";
return $where;
}
add_filter( 'posts_where', 'filter_where' );
$query = new WP_Query( $query_string );
remove_filter( 'posts_where', 'filter_where' );
সম্পাদনা করুন
(ওপির আপডেট হওয়া প্রশ্নের জবাবে)।
ক্যোয়ারী_পোস্টগুলি ব্যবহার করা এড়িয়ে চলুন । আপনার মূল ক্যোয়ারীটি পরিবর্তন করতে আপনি উপরের কৌশলটি ব্যবহার করতে পারেন (কিছু অতিরিক্ত শর্ত সাপেক্ষে - এটি হোম পৃষ্ঠা, 'ফুবার' নামে একটি পৃষ্ঠা ইত্যাদি):
function wpse52070_filter_where( $where = '' , $query ) {
if( $query->is_main_query() && is_page( 'foobar' ) ){
// posts in the last 30 days
$where .= " AND post_date > '" . date( 'Y-m-d', strtotime( '-30 days' ) ) . "'";
}
return $where;
}
add_filter( 'posts_where', 'wpse52070_filter_where' );