我一直在完善下面的这段代码,但遇到了一个问题。我想知道如何更改以下代码,以便在接下来的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\' );
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\'
));