按固定起止日期范围查询帖子

时间:2013-09-17 作者:user998163

我需要在一定的时间范围内获得帖子。我正在使用posts_where 滤器

我想指定开始日期和结束日期。这是我使用的函数:

function filter_where( $where = \'\' ) {
    $where .= " AND post_date >= \'2012-03-01\' AND post_date =< \'2014-03-01\'";
    return $where;
}
此筛选器不返回任何内容。错误必须位于秒附近的任何位置AND.

这是我的职责:

number_sold_mottos( $from, $till );

function number_sold_mottos( $from, $till ){
    add_filter( \'posts_where\', \'filter_where\' );
    $args = array( \'posts_per_page\' => -1, \'post_type\' => \'shop_order\'  );
    $post_ids   = array();
    $the_query = new WP_Query( $args );
    $last_order_ids = array();
    if ( $the_query -> have_posts() ):
        while ( $the_query -> have_posts()) :
            $the_query -> the_post();
            the_title();
        endwhile;
    endif;
    wp_reset_query();
    remove_filter( \'posts_where\', \'filter_where\' ); 
}


function filter_where( $where ) {
    $where .= " AND post_date >= \'2012-03-01\' AND post_date =< \'2014-03-01\'";
    return $where;
}
欢迎任何帮助。

4 个回复
最合适的回答,由SO网友:Matt.C 整理而成

您可能应该添加过滤器,然后使用新查询,然后删除过滤器。

function filter_where( $where ) {
    $where .= " AND post_date >= \'2012-03-01\' AND post_date <= \'2014-03-01\'";
    return $where;
}
add_filter( \'posts_where\', \'filter_where\' );

$query = new WP_Query( array( \'post_type\' => \'shop_order\' ) );
while( $query->have_posts() ) : $query->the_post();
    the_title();
    the_content();
endwhile;

remove_filter( \'posts_where\', \'filter_where\' );

SO网友:Anjum

不执行空操作$where 函数参数中的变量这就是为什么什么也得不到,因为$where 函数中定义的语句没有日期范围以外的任何查询参数,需要展开$where 像这样。

已编辑:

number_sold_mottos( $from, $till );

function number_sold_mottos( $from, $till ){
     add_filter( \'posts_where\', \'filter_where\' );
     $args = array( \'posts_per_page\' => -1, \'post_type\' => \'shop_order\'  );
     $post_ids   = array();
     $the_query = new WP_Query( $args );
     $last_order_ids = array();
     if ( $the_query->have_posts() ):
         while ( $the_query->have_posts()) :
             $the_query->the_post();
             the_title();
         endwhile;
         wp_reset_postdata();
     endif;
    remove_filter( \'posts_where\', \'filter_where\' ); 
}


function filter_where( $where ) {
    $where .= " AND post_date >= \'2012-03-01\' AND post_date <= \'2014-03-01\'";
    return $where;
}

SO网友:cybmeta

也许这可以帮助您:

//Add the filter
add_filter(\'posts_where\', \'filter_where\' );
//Remove the = \'\'
function filter_where( $where ) {
    $where .= " AND post_date >= \'2012-03-01\' AND post_date =< \'2014-03-01\'";
    return $where;
}
您还必须知道,此筛选器将影响在您的站点中执行的所有查询,但使用get_posts() 函数,除非设置参数suppress_filters 例如,设置为falseget_posts( array( \'suppress_filters\' => FALSE ) );

SO网友:kaiser

附加信息(WordPress 3.7之前没有解决方案):有WP_Date_Query.

结束

相关推荐

JQuery multiple toggle values

我正试图隐藏/显示依赖于所选页面模板的元数据库。直到我在多个选择的页面模板上显示元盒之前,这一直都很好。下面的代码显示默认页面的富内容编辑器,但不显示页面子级。php页面。我猜我的代码写错了:(function($){ $(function() { $(\'#page_template\').change(function() { $(\'#postdivrich\').toggle($(this).val() == \'page-c