Corregir la sintaxis de PHP para un bucle WP personalizado

Estoy tratando de insertar una opción de clasificación en mi sitio de wordpress. Ya lo tengo funcionando, pero necesito ayuda para usarlo con el bucle de wordpress correctamente. Actualmente tengo:

En una página, hay opciones para ordenar alfabéticamente o cronológicamente:

<a href="?sort=date">Newest</a>
<a href="?sort=title">Alphabetical</a>

El código de clasificación comienza aquí, colocado encima del bucle:

<?php $sort= $_GET['sort']; 
    if($sort == "title") { $order= "'orderby'=>'title','order'=>ASC'"; } 
    elseif($sort == "date") { $order= "'orderby'=>'date'"; } 
    else{ $order= "'orderby'=>'date','order'=>'DESC'"; } 
?>

nota: estoy bastante seguro de que el problema se encuentra en la variable $ orden

Wordpress Loop usando variable$order como argumento

<?php $loop = new WP_Query( array( $order, 'post_type' => 'films', 'post_parent' => 0, 'posts_per_page' => -1 ) ); ?>

<?php while ( $loop->have_posts() ) : $loop->the_post(); ?>

    Wordpress loop stuff here

<?php endwhile; ?>

El bucle muestra los elementos correctamente, pero los enlaces de clasificación no funcionan. Este código funciona muy bien con query_posts pero estoy intentando que esto funcione para WP_Query (arriba). ¿Alguna idea aquí?

ACTUALIZAR: Esta técnica funciona muy bien utilizando query_posts como a continuación (pero todavía lo necesito para WP_Query)

<?php $sort= $_GET['sort']; 
    if($sort == "title") { $order= "&orderby=title&order=ASC"; } 
    elseif($sort == "date") { $order= "&orderby=date"; } 
    else{ $order= "&orderby=date&order=DESC"; } 
?>

<?php $posts = query_posts($query_string . $order); ?>
<?php if(have_posts()) : while(have_posts()) : the_post(); ?>
       Wordpress Stuff Here
<?php endwhile; ?>
<?php endif; ?>

Respuestas a la pregunta(1)

Su respuesta a la pregunta