How to display Changing post link for 24 hours in x category

You could always use get_posts() to return a random post, but it would change every time the page loaded. So, here’s an idea for you.

In a plugin file, set up a wp_cron hook.

<?php
/* Your plugin header goes here */

register_activation_hook( __FILE__, 'wpse24234_activation' );
function wpseo24234_activation()
{
    wp_schedule_event( time(), 'daily', 'wpse24234_daily' );
}

Then hook a function into your cron action that grabs a random post (via get_posts()) and stores it in a transient that expires every 24 hours.

add_action( 'wpse24234_daily', 'wpse24234_daily_cb' );
function wpse24234_daily_cb()
{
    $posts = get_posts( array( 'cat' => YOUR_CATEGORY_ID_HERE, 'numberposts' => 1, 'orderby' => 'rand' ) );
    if( ! empty( $posts ) )
        set_transient( 'cat_1_post', $posts[0]->ID, 60 * 60 * 12 );
}

Then on the front end, you can get the post ID with get transient, and use the ID to pull in whatever other stuff you’d like.

<?php
/* Somewhere on your site */
$id = get_transient( 'cat_1_post' );

$link = '<a href="' . get_permalink( $id ) . '">' . get_the_title( $id ) . '</a>';
?>

Todays random post from Category 1 is <?php echo $link; ?>

You’ll have to do some testing to see if this will work for you, of course.