The variable $theTitle is not interpolated in a single quote string.
query_posts('category_name=.$theTitle&orderby=rand');
Will ask for exactly that string. $theTitle will not be replaced with a title and the dot (.) will remain in the query. The result will be unpredictable.
So, use a double quoted string:
query_posts( "category_name={$theTitle}&orderby=rand" );
Or change the order of the arguments and concatenate the title.
query_posts( 'orderby=rand&category_name=' . $theTitle );
Are you sure you want to use query_posts()
in an assignment? Isn't kind of like telling the teacher you didn't read the documentation which pretty much says "don't use query_posts()".
EDIT:
Apparently, the query_posts() function uses the parameters for WP_Query which makes sense.
The instructions say that you should use the category slug, not category name: category_name (string) - use category slug (NOT name).
I have no idea why they would not name the paramteter category_slug
So first we need to get the category slug.
function wpse_100126_get_category_slug() {
$current_cat = get_category( get_query_var( 'cat' ) );
return $current_cat->slug;
}
Then plug that into the query:
query_posts( 'orderby=rand&category_name=' . wpse_100126_get_category_slug() );