This sounds like something that eCommerce plugins should be able to handle.
My naive approach to this problem can be to generate a new URL each day by embedding the date in it and then checking with the date in the URL matches the current day before sending the file.
You will need a plugin that gives you the ability to use a shortcode to rmbed the URL, and checks the validity of it before sending the file.
// files assumed to reside at wp-content/uploads/daily
// use the shortcode like that
// [daylyurl file="file name" anchor="download it"]
add_shortcode('dailyurl','my77348_dailyurl');
function my77348_dailyurl($attr,$content="",$tags) {
$url = get_option('siteurl').'?download='.$attr['file'].'&code=".md5(intval(time()/24*60*60));
return "<a href="https://wordpress.stackexchange.com/questions/77348/$url">$attr["anchor']</a>";
}
// handle the download itself
add_action('init','my77348_download');
function my77348_download() {
if (isset($_GET['download'])) {
if ($_GET['code'] == md5(intval(time()/24*60*60))) { // if it match it is legit
$f = ABSPATH.'/wp-content/uploads/daily/'.$_GET['download'];
// not sure if you can set mime types here or need to do all of this before init
readfile($f); send the file itself
exit();
} else
wp_die(404); // not legit
}
}
This is not a production grade code as there are many sanity checks I omitted, and probably has a bug or more, but I think the concept should work as long as your members don’t have a big incentive to try to hack it.