making random query button using $_GET

You cannot use the direct class methods have_posts() or the_post() unless you’re working with the main query. In order to modify the main query you must use query_posts.

If you want to create a new query object you need to call those methods from the new query object as Rarst showed in his example.

So you should be either…

  • Changing the main query

    <?php query_posts('orderby=rand'); ?>
    
    <div id="front-video-container">
    
    <?php if( have_posts() ) : ?>           
    <?php while( have_posts() ) : the_post(); ?>
    

NOTE: If this query has other purposes you may need to retain existing query parameters, using an array merge or conditional query_posts logic.

  • Or, creating a new query

    <?php $my_query = new WP_Query('orderby=rand'); ?>
    
    <div id="front-video-container">
    
    <?php if( $my_query->have_posts() ) : ?>           
    <?php while( $my_query->have_posts() ) : $my_query->the_post(); ?>
    

It’s hard to say without seeing more of the code and knowing where you’re placing it, i’d assume you will need to retain query parameters, in which case i’d suggest using the first sample and conditionalising the query_posts line.. eg.

<?php 
if( isset( $_GET['p'] ) && 'random' == $_GET['p'] ) {
    query_posts('orderby=rand');
}
?>

Hope that helps.