将日期查询从月更改

时间:2012-05-24 作者:pelle

我一直在完善下面的这段代码,但遇到了一个问题。我想知道如何更改以下代码,以便在接下来的30天内,而不仅仅是每月(也就是说,1月15日的周年纪念将在12月15日出现在我的列表中,而不仅仅是1月一日)

任何建议(我遇到了这样的麻烦,因为如果我更改日期排序,我无法收集正确的用户周年纪念日期)

 $args = array(      
\'meta_key\' => \'anniversary_date\',    
 \'meta_value\' => 0,  
 );   
$user_query = new WP_User_Query( $args );  
 $users = $user_query->get_results();   

 foreach( $users as $user ):     
echo $user->display_name;   
 echo \' will be celebrating their anniversary on \';      
echo get_user_meta( $user->ID, \'anniversary_date\', true );    
 endforeach;  
<小时>
function anniversary_user_query( $query ){   

 if( $query->query_vars[\'meta_key\'] == \'anniversary_date\' && $query->query_vars[\'meta_value\'] === 0 ):     
     global $wpdb;         
     $thismonth = date(\'m\');       
     $query->query_where = "WHERE 1=1 AND ( $wpdb->usermeta.meta_key = \'anniversary_date\' AND ( MONTH( $wpdb->usermeta.meta_value ) = $thismonth ) )";     
endif;    
return $query; 
 }  
add_action( \'pre_user_query\', \'anniversary_user_query\' ); 

1 个回复
SO网友:moraleida

我有点搞不懂为什么要将0作为meta\\u值传递,但是如果您将unix时间戳存储在anniversary_date, 这种方法应该足够:

// queries anniversary dates between today and the next 30 days
    $query = new WP_Query(array(
        \'order\' => \'ASC\',
        \'orderby\' => \'meta_value\',
        \'meta_key\' => \'anniversary_date\',
        \'meta_value\' => array(strtotime(\'today\'), strtotime(\'+30 days\')),
        \'meta_compare\' => \'BETWEEN\'
    ));

结束

相关推荐

自定义日期更改器POST_DATE=>将来-错过计划错误

我正在为我的网站开发一个定制的事件调度器,让人们可以轻松地进入并设置文章在将来发布。我之所以要覆盖正常的Wordpress功能,是因为我想让选择日期变得非常容易,因为布道应该只在周日发布。因此,我有一个自定义下拉日历,只允许您选择一个月的星期日。无论如何,我的问题是,我所有的帖子在管理面板中都给出了一个“错过时间表”的错误。我可以通过使用“post\\u status”=>“future”在页面上列出帖子来绕过这个问题,但这有点“黑客”。。。为什么这段代码会给我那个“错过计划”的错误?functio